1.“+=”的实质:
public static void main(String[] args) {
//+=表示:左边的变量 = (左边变量的数据类型)(左边的变量+ 常量);
int b = 3;
b+='a';
System.out.println(b);
}
}
2.数组的定义方式:
public static void main(String[] args) {
//数组的定义方式
int [] arr = new int[10];
System.out.println(arr[0]);
int c[][] = new int[10][10];
int []d[] = new int[10][10];
}
3.自增和自减运算
public static void main(String[] args) {
int a = 3;
//--a和++a是先自减一和自加一后在进行运算
int b= --a*5; // b = 10
int n = 3;
//n--和n++是先运算再进行减一或加一的计算
int m = n--*5;
System.out.println(m);// m = 15
System.out.println(n);// n = 2;
}
以自增为例:
先++,
int a = 1;
++a;
1.先进行自增。
2.再把值拿出来。
3.把拿出来的值参与运算
后++,
int a = 1;
a++;
1.先把值拿出来。
2.再进行自增。
3.把拿出来的值参与运算。
“不管是先++,还是后++,单独写一行的时候,结果是一模一样的。”
4.<<和>>和>>>运算:
int r = 3;
//计算规则:将r转换成二进制数,然后根据8421转化码,向左移动2个位置,得到的二进制数再转化为十进制数
int d = r<<2;
System.out.println(d);// d = 12;
//计算规则同上,>>与>>>计算的结果一样
int v = d>>2;
System.out.println(v); // v = 3
5.类型间的转换:
类型强弱从小到大:
byte < short < int < long < float < double char boolean
字节数: 1 2 4 8 4 8 2 基本不考虑
public static void main(String[] args) {
// 赋值正确,float的范围比int大,布尔类型不能与int类型相互转换
float f = -412;
int a = (int)f;
double d = 0x12345678;
//当int型强制转换为byet型时,若超过byte的范围(-128~127),则会损失精度,去掉前三个字节,保留最后一个字节
byte mb = (byte)300;
System.out.println(mb); //mb = 44;
//long p = 012; 输出结果为10,当p= 018或019时报错,020时不报错
// int n = 011; 输出结果为9
//int m= "join"+3;
String s= "join"+ 3;
//当char类型与int类型相加时,char类型转换成相应的ASCII码后,在进行运算。
int g= 'a' + 5;
//类型强弱:double>float>int;因此,小数后面如果不加f,默认类型为double,int型与double型相加时,结果为double型,
//若想用int或者float类型的变量接收,则必须强制类型转换
float h = 5+(float)5.5;
//float h = 5+5.5f;
//float h = (float)(5+5.5);
System.out.println(g); // g = 102
}
附加题目:
(1)
int a = 100;
byte b = 50;
short c = a + b;//错误的。
注意:"byte 、short 、char 类型的变量在参与运算的时候,会自动类型提升为 int 类型" "变量";等号的右边,如果是byte short char类型的变量参与运算的时候,会触发这个机制。
(2)
int x = 100;
long y = 200;
int z = x + y;//错误的。
注意: “当两个不用类型相加时,如果byte short char 那么触发上一题的机制”
“如果是非这三种类型,提升为两者中的较大者。”
byte x = 3;
byte y = 4;
byte z = x + y; //错误的。
注意:”byte short char 类型的变量在参与运算的时候,会自动类型提升为 int 类型” “变量”
byte zz= 3+ 4; //正确的。
触发:”常量优化机制。”在编译的时候,等号右边就变成了7.会检查7是否在左边的范围之中,如果在,就正确不报错的;如果不在,那么就报错。
6.字符串与整数的运算:
实质:就是字符串与数字的拼接,只有相加,没有相减、相乘、相除或取模。
String s = "abc";
System.out.println(s + 10);//abc10
String s = "abc";
System.out.println(10 + 10 + s);//20abc
7.&、|、&&、||的区别:
&&:两边都为真时,结果才是真
||:两边都为假时,结果才为假
&与&&结果一样,|与||的结果一样
不同点:&&和||具有短路效果;
当使用&&时,如果前半部为假,则半部不执行;
当使用||时,如果前半部为真,则后半部不执行;
&与|不具有短路效果,后半部一定会执行。
8.三元运算符/三元表达式:
数据类型 变量名 = 关系表达式 ? 表达式1 : 表达式2;
int a = 10;
int b = 20;
a > b ? a : b; //错的
int result = a > b ? a : b; //对的
System.out.println(result);