优先级:
能用括号包住就用括号包住,代码应该以易理解的方向编写
赋值操作符:
=
算术操作符:
+ - * / %
+= /= -= *= %=等同于
a = a+b;
a = a/b;
a = a-b;
a = a*b;
a = a%b;
JAVA+号没有重载
7 % 2==1; //true
(2\*3)+1==7; //true
一元操作符:
- + 等同于-1 +1
自动递增/递减操作符:
++ --
关系运算符:
> < >= <= == != 返回值为boolean类型的值
对象使用关系操作符比较的是对象的地址值,Object类的equals方法默认比较地址值
逻辑操作符:
&& || !
短路:
当逻辑操作符的||的前一方为true则||后的一方不运算,当&&的前一方为false则&&后的一方不运算
(3>1)||(1>2) //(1>2)不运算
(1>3)&&(1>2) //(1>2)不运
使用直接常量的时候,应该给予类型:
byte b = 1B;
long l = 1L;
float f = 1.0F;
double d = 1.0D;
int x = 0X2f; //16进制表示法
尽量使用大写字母防止混淆
指数计数法:
e代表10的次方
double d = 1e-34; //代表10的-34次方
移位操作符:
将数值变为2进制位数,左边为高位,右边为低位
<<:去高补低,将35转换为2进制,去3个高位补3个低位0
long l = 35 << 3; //35乘上2的3次
>>:去低补高,将35转换为2进制,去3个低位补3个高位0
long l = 35 >> 3; //35除以2的3次
>>>:去低补高,将35转换为2进制,第一个高位补1,其他2个高位补0,去3个低位(有正负符号)
long l = 35 >>> 3; //8
按位操作符:& | ~ ^
int x = 2 & 1; //0,将值转换为二进制数位与位进行比较,&为*,|为+,2&1就是2进制(10)*(01)
三元运算符:
(布尔表达式)?值1:值2;
基本数据类型转换:
扩展转换:小转大
窄化转换:大转小(可能丢失精度)
截尾:浮点类型转换时,会截去小数点部分
自动类型提升:小类型和大类型运算时结果会提升至大类型,+=等操作符会根据类型自动转换
网友评论