运算符
算术运算符
/*
算术运算符: +,-,*,/,%,++,--
+ 表示一个正数
+ 字符串 连接
+ 加法运算
-,*,/,% 只能进行算数运算 数值与数值(char)
*/
int y = x++ +2; //x++ 先赋值再运算
int y = ++x + 2; //++x 先运算再赋值
比较元素符
/*
比较运算符
== != > < >= <=
== != 数值与数值(char) 布尔与布尔 引用类型 与 引用类型
> < >= <= 数值与数值(char)
*/
逻辑运算符
/*
逻辑值与逻辑值之间的运算
&—逻辑与 | —逻辑或 ^ —逻辑异或 (还可以参与位运算 数值与数值)
&& —短路与 || —短路或 !—逻辑非
*/
/*
&逻辑与 表达式中有一个false 结果为false,都为true结果为true
&& 逻辑与(短路与) 表达式中有一个false 结果为false,都为true结果为true
当遇到false 短路 后面的表达式不执行
*/
/*
|逻辑或 表达式中有一个true 结果为true,都为false结果为false
|| 逻辑或(短路或) 表达式中有一个true 结果为true,都为false结果为false
当遇到true 短路 后面的表达式不执行
*/
//逻辑非 取反
System.out.println(!true);
//逻辑异或 相同为false 不同为true
System.out.println(true^true);
System.out.println(true^false);
赋值运算符
= += -= *= /= %=
int x = 1; 普通的赋值
x += 10; 把x与10相加再赋值给x
x -= 10; 把x与10相减再赋值给x
同理 *= /= %= 都是如此
b=b+1与b+=1的区别
public static void main(String[] args){
// byte b = 1;
// b = b+1; // 报错 可能损失精度
// 因为byte b 在运算是转为了int
// 现在要用byte类型的b接收,所以会报错
//System.out.println(b);
byte b = 1;
b += 1;
System.out.println(b); //2
// 可见 b += 1;并不等价于 b=b+1
b+=130;
System.out.println(b);//-124
//由此可见 b+=1 等价于 b=(byte)b+1;默认做了强制转换
条件运算符
/*
条件运算符
(条件表达式)?表达式1:表达式2
为true,运算后的结果是表达式1;
为false,运算后的结果是表达式2;
表达式1和表达式2为同种类型
*/
int a = 60;
String r = (a>=60)?"及格":"不及格";
System.out.println(r);
位运算符
注意:要做位运算,首先把数据转换为二进制补码,运算完后转回原码。