运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
算数运算符
注意
- 字符串的加号是字符串的拼接。(+)还能把非字符串转换为字符串
String str1 = "5+5"+"="+"55"; String str2 = "5+5="+5+5;
str1和str2都是 5+5=55 - 对于除号(/),它的整数除和小数除是有区别的:整数之间做除法,只保留整数部分,小数部分舍去。若想得到有小数的值,只需在除数或被除数后面乘以1.0
- 如果对负数取模,可以把模数负号忽略不计,如: 5 % -2 = 1 。 但被模数是负号则补课忽略,如: -5 % 2 = -1 。取模运算的结果不一定总是整数。
- i++的值为i+1之后的值,++i为i+1之前的值
- 以下两者的区别
运行结果:System.out.println('A'+'B'+'C');/*charl类型数据是可以做数学运算的,在做数学运算时把字符转化为ASCII码进行计算*/ System.out.println("A"+"B"+"C");/*字符串与其它数据类型相加时,实际上将其他数据转换为字符串,做字符串的拼接*/
198
ABC
赋值运算符
符号:=
- 当 = 两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。强制类型转换在之前的Java语法1中提到过。
- 支持连续赋值
扩展赋值运算符
+=,-=,*=,/=,%=
int i = 1;
i += 2;//i = i + 2;
i -= 3;//i = i - 3;
String str = "he";
str += "llo";//字符串的+=是字符串的拼接
int a = 1;
a *= 0.1;
System.out.println(a);//0 变量在参与运算时,会把结果转换为当前变量的类型
比较运算符(关系运算符)
注意
- 比较运算符的结果都是boolean型,要么是ture要么是false
- 比较运算符“==”不能写成“=”
逻辑运算符
&——逻辑与
| ——逻辑或
!——逻辑非
&&——短路与
||——短路或
^——逻辑异或
注意
-
& 和 && 的区别
- 单&时,左边无论真假,右边都进行运算
- 双&&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
-
| 和 || 的区别
- | 和 || 的区别同理,|| 表示当左边为真,右边不参与运算
-
异或(^)与或(|)的不同之处
- 当左右都为true时,结果为false。异或追求的是异
位运算符
位运算符是直接对二进制进行运算
- 左移(右移),小数点右(左)移。例(二进制,左右移2位):011. ->左移2位-> 01100. -> 右移2位-> 011.
- &运算,同位&运算时,都是1结果为1,其他情况都是0
- |运算,同位|运算时,都是0结果为0,其他情况都为1
- ^运算,同位异或运算时,都是0或者都是1时结果是0,其他情况都是1
- ~运算,是把二进制的同位反转,也就是0变1,1变0
三元(目)运算符
格式:
(条件表达式)?表达式1:表达式2;
当条件表达式为true,运算后的结果是表达式1;
当条件表达式为false,运算后的结果是表达式2。
例子
/*获取两个数中的较大数*/
max = m > n ? m : n;
/*获取三个数中的较大数*/
max = m > n ? (m > k ? m : k) : (n > k ? n : k);
运算符的优先级
- 运算符有不同的优先级,所谓优先级就是表达式中的运算顺序。如下表,上一行的运算符总优先于下一行
- 只有单目运算符、三元运算符、赋值运算符是从右向左运算的