变量
- 相同的作用域下不能有同名的变量
基本数据类型
- 存的就是具体的值,有四类八种基本数据类型
- 逻辑类型 boolean
- 整型 byte、shot、int、long
- 浮点型 float、double
- 字符型 char
引用数据类型
- 存的是一个地址值,指向一个内存地址
- 除了基本数据类型,其他的都是引用数据类型
字符串
- String s = “ABC”;
数组
- 数组是一种数据结构(相当于容器),用来存放相同类型的数据
- 数组定义时必须指定数组的大小、固定数据类型
- 数组分为一维数组、多维数组(二维数组)
- 数组通过索引访问元素,索引从0开始
- 获取数组的长度:数组名.length;
一维数组
- 一维数组赋值、取值:arr[0] = 10; System.out.println(arr[0]);
- 创建一维数组分为静态初始化、动态初始化,数组初始化就是赋值
- 静态初始化:数据类型[] 数组名 = {值1,值2,值3,值4}; int[] arr = {1,2,3,4,3,4,5};
- 不能通过静态初始化直接修改整个数组
- 动态初始化:数据类型[] 数组名 = new 数据类型[size]; int[] arr = new int[3];
动态初始化元素默认值:boolean是false、整型是0、小数是0.0、char是空字符、引用数据类型是null
二维数组
- 创建二维数组分为静态初始化、动态初始化
- 静态初始化:数据类型[] [][][] 数组名 = {{…},{…},{…}; int[] [] arr2 = {{1,2},{3,4},{5,6},{1}};
- 动态初始化:数据类型[] [] 数组名 = new 数据类型[length] [length]; int[] [] arr = new int[3] [3];
- 二维数组赋值、取值:arr[0] [0] = 10; System.out.println(arr[0] [0]);
数组常见异常
- NullPointerException null值调用属性或者方法
- ArrayIndexOutOfBoundsException 访问了不存在的索引
- 报了异常后面的代码不会被执行
运算符
算数运算符
- “+”、“-”、“*”、“/”
- % 表示 取余(取模)
- “+”:可以表示字符串拼接,字符串可以和任意数据类型进行拼接,最终得到结果也是字符串
- ++: 自增1 – :自减1,单独使用时,++ 放前和放后没有区别,都是+1
- 参与运算时,++在后面先把变量x的值取出来赋值(运算),再自增1
- 参与运算时,++在前面先把变量x自增1,再把值取出来赋值(运算)
- java运算结果的数据类型 = 参与运算的范围最大数据类型
关系运算符
- 结果为boolean
- ==、!=、>、>=、<、<=
逻辑运算符
- 结果为boolean
- &、|、!、&&、 ||
- & 遇false则false,| 遇true则true
- && 或||短路:如果左边已经决定了整个表达式的结果,那么右边不会执行,提升性能
赋值运算符
- =、+=、-=、 *=、 /= 、%=
条件运算符(三元运算符)
- boolean结果的表达式:? 结果1 : 结果2;
- true 返回 结果1,false 返回 结果2
public class StringDemo {
public static void main(String[] args){
//数据类型 变量名 = 变量值;
String str = "helloworld";
//修改值
str = "fffff";
System.out.println(str);
}
}
public class ArrayDemo {
public static void main(String[] args){
//静态初始化:数据类型[] 数组名 = {值1,值2,值3,值4}
int[] ages = {20, 21, 22, 23, 33};
//ages输出地址值:[I@1b6d3586
System.out.println(ages);
System.out.println(ages[0]);
System.out.println(ages[1]);
System.out.println(ages[2]);
System.out.println(ages[3]);
System.out.println(ages[4]);
//修改数组元素的值
ages[0] = 1;
System.out.println(ages[0]);
//动态初始化:数据类型[] 数组名 = new 数据类型[size];
int[] ages2 = new int[4];
ages2 = new int[3];
//ages2输出地址值:[I@4554617c
System.out.println(ages2);
//动态初始化元素默认值:boolean是false、整型是0、小数是0.0、char是空字符、引用数据类型是null
System.out.println(ages2[0]);
System.out.println(ages2[1]);
System.out.println(ages2[2]);
ages2[0] = 100;
ages2[1] = 40000;
System.out.println(ages2[0]);
System.out.println(ages2[1]);
//获取数组的长度:数组名.length;
System.out.println(ages2.length);
}
}
public class ArrayArrayDemo {
public static void main(String[] args){
//静态初始化:数据类型[][] 数组名 = {{..},{..},{...}};
String[][] arr = {{"a","b"}, {"c","d"}, {"e","f","g"}};
//[[Ljava.lang.String;@154617c
System.out.println(arr);
//[Ljava.lang.String;@a14482
System.out.println(arr[0]);
System.out.println(arr[1][1]);
arr[1][1] = "mm";
System.out.println(arr[1][1]);
System.out.println(arr.length);
//动态初始化:数据类型[][] 数组名 = new 数据类型[][];
String[][] arr1 = new String[3][];
//null
System.out.println(arr1[0]);
arr1[0] = new String[2];
arr1[0][0] = "ll";
arr1[0][1] = "ff";
System.out.println(arr1[0][0]);
System.out.println(arr1[0][1]);
String[][] arr2 = new String[3][2];
//[Ljava.lang.String;@140e19d
System.out.println(arr2[0]);
//null
System.out.println(arr2[0][0]);
arr2[0][0] = "555";
System.out.println(arr2[0][0]);
}
}
public class ArrayException {
public static void main(String[] args){
String[] arr = {"cba", "nba", "mba"};
System.out.println(arr[0]);
//数组常见异常
//ArrayIndexOutOfBoundsException
//System.out.println(arr[100]);
//报了异常后面的代码不会被执行
System.out.println("-------");
System.out.println("-------");
//引用数据类型赋值为null
String[] arr1 = null;
System.out.println(arr1);
//NullPointerException
System.out.println(arr1[0]);
}
}
public class OpeartorDemo {
public static void main(String[] args){
//算数运算符
int a = 10;
int b = 3;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
//字符串拼接,字符串可以和任意数据类型进行拼接,最终得到结果也是字符串
System.out.println("a" + "B" + (100 + 100));
//java运算结果的数据类型 = 参与运算的最大数据类型
System.out.println(1.0*a/b);
// ++(自增)、--(自减),单独使用时,前后效果一致,都是自增1/自减1
++a; // a = a + 1
//参与运算时,++在后面,先运算再自增,++在前面,先自增再运算
int c = a++;
//int c = a; a = a + 1;
int d = ++a;
//a = a + 1; int c = a
System.out.println(c);
System.out.println(d);
System.out.println(a++ + ++a);
//关系运算符
System.out.println(a > b);
System.out.println(a >= b);
System.out.println(a < b);
System.out.println(a <= b);
System.out.println(a != b);
System.out.println(a == b);
//逻辑运算符 boolean
System.out.println(!false);
// & 遇到false则false
System.out.println(a > b & a > b);
System.out.println(a > b & a < b);
System.out.println(a < b & a > b);
System.out.println(a < b & a < b);
// | 遇到true则true
System.out.println(a > b | a > b);
System.out.println(a > b | a < b);
System.out.println(a < b | a > b);
System.out.println(a < b | a < b);
//&&、|| 提升性能
System.out.println(a > b && a > b);
System.out.println(a > b && a < b);
System.out.println(a < b && a > b);
System.out.println(a < b && a < b);
//赋值运算符 += -= *= /= %=
a = 10;
a += 10;
//a = a + 10;
a += 10.1;
//java中不允许大的数据类型直接赋值给小的数据类型
a = (int)(a + 10.1);
System.out.println(a);
//三元运算符
//A(boolean结果的表达式) ? B : C
//A为true执行B,A为false执行C
a = 10;
b = 50;
int max = a > b ? a : b;
System.out.println(max);
}
}