运算符:
算术运算符: +,-,*,/,%,++,--
赋值运算符 =
一个=号是赋值,==是关系运算符
扩展赋值运算符:+=,-=,*=,/=
关系运算符: >,<,>=,<=,==,!=
关系运算符返回类型是boolean,要么true,要么false
逻辑运算符: &&,||,!
位运算符: &,|,^,~ , >>,<<,>>>
条件运算符: ? :
算术运算符
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);
++: 单目运算符,自加1,如果++放在前面,先自加,再参加运算
如果++放在后面,先参加运算,后自加
--:单目运算符,自减1,如果--放在前面,先自减,再参加运算
如果--放在后面,先参加运算,后自减
System.out.println(a++);
System.out.println(++a);
元素符的优先级问题:++优先级高于+
System.out.println(++b+b++); 6
System.out.println(b);4
扩展赋值运算符
int c = 10;
这两种写法结果是一样的,建议大家使用扩展运算符来写代码
c = c + 2;
c += 2;
数据类型的转换:
d是byte类型,1是int类型,d+1就变成int类型,低位向高位自动转换
=号右边高位,左边是低位,就要强制转换 语法:(datatype)
byte d = 10;
d = (byte)(d + 1);
d = d + 1;
d += 1;
System.out.println(d);
关系运算符
System.out.println(2 > 3);
System.out.println(2 < 3);
System.out.println(2 >= 3);
System.out.println(2 <= 3);
System.out.println(2 == 3);
System.out.println(2 != 3);
逻辑运算符
&&:短路与,如果第一表达式返回为false,后面的表达式就不再执行
&: 逻辑与,不管第一个表达式返回是true还是false,后面的表达式都会执行
||:短路或,如果第一表达式返回为true,后面的表达式就不再执行
|: 逻辑或,不管第一个表达式返回是true还是false,后面的表达式都会执行
System.out.println(2 > 3 && 5 > 4);
System.out.println(2 > 3 & 5 > 4);
int aa = 1;
System.out.println(2 > 3 && 5 > aa++);
System.out.println(aa);1
System.out.println(2 > 3 & 5 > aa++);
System.out.println(aa);2
System.out.println(2 > 3 || 5 > 4);
System.out.println(!false);
System.out.println(!true);
位运算符
System.out.println(4 & 5);4
System.out.println(4 | 5);5
System.out.println(4 ^ 5);1
移码 原码 反码 补码
System.out.println(~4);-5 ? ?
用最高效的方法把2变成16?
<<:有符号左移,乘2操作,左移几位就乘以几个2
>>:有符号右移,除2操作,右移几位就除以几个2
>>>:无符号右移
System.out.println(2 << 3);16
System.out.println(16 >> 3);2
条件运算符:三目运算符,第一个表达式返回为true,则取?后面的值,反之取:后面的值
System.out.println(2 > 3 ? 2 : 3);3
System.out.println(false ? false : true ? false : true);
基本数据类型之间的转换:
1、自动转换(隐式转换):赋值运算符左边范围大,右边范围小,就是小范围向大范围转,会自动转型
2、强制转换:赋值运算符左边范围小,右边范围大,就是大范围向小范围转,需要强制转换
语法:(datatype)
注意:
1、一般都是同一种数据类型,我们才讨论它们的转型问题;
2、强制转换之后,数据精度可能会丢失
byte a1 = 10;
a1 = (byte)(a1 + 2);
System.out.println(a1);
System.out.println((byte)270);14
}
}
?