(一) JavaSE - 操作符
作者:互联网
一、基本概念
1、介绍:
表达式由操作数与操作符组成,操作数可以是一个常量、变量或表达式,操作符用于指明操作数的操作方式。比如:1 + 2,1 > 2 && true。
2、优先级:
优先级 操作符 简介 结合性 1 [ ]
、.
、( )
方法调用,属性获取 从左向右 2 !、~、 ++、 – 一元运算符 从右向左 3 * 、/ 、% 乘、除、取模(余数) 从左向右 4 + 、 - 加减法 从左向右 5 <<、 >>、 >>> 左位移、右位移、无符号右移 从左向右 6 < 、<= 、>、 >=、 instanceof 小于、小于等于、大于、大于等于, 对象类型判断是否属于同类型 从左向右 7 == 、!= 是否相等,是否不等于。 从左向右 8 & 按位与 从左向右 9 ^ 按位异或 从左向右 10 | 按位或 从左向右 11 && 短路与 从左向右 12 || 短路或 从左向右 13 ?: 条件运算符 从右向左 14 =、 += 、-= 、*= 、/=、 %=、 &=、 |=、 ^=、 <、<= 、>、>= 、>>= 混合赋值运算符 从右向左 参考:https://www.sojson.com/operation/java.html
那么多似乎有点记不住,那么为表达式加括号()
吧。
二、操作符分类
1、按作用的操作数个数分类:
一元操作符:操作的操作数为一个,比如:++、–
二元操作符:操作的操作数为两个,比如:+、-、*、/
三元操作符:操作的操作数为三个,比如:三元表达式 int i = (2 > 1 ? 2 : 1)
2、具体功能分:
算数操作符:+、-、*、%、/
逻辑操作符:&&、||
比较操作符:>、<、<=、>=。。。
按位操作符:&、| 、^、~
移位操作符:>>、<<、<<<
三元操作符:布尔表达式?表达式1:表达式2
三、操作符介绍
注意:对于byte、short、char在运算时会转换为int
1、算数操作符
+、-、*、/、%、++、–
注意:
(1)、除了boolean,其他基本数据类型都可以进行这些操作。
(2)、除了一元操作符外,其他算数操作符可以配置=
使用。
2、逻辑操作符
&&、||
注意:
(1)、左右两边均为布尔表达式。
(2)、会发生短路现象,即一旦通过判断左边的表达式,可以确定整个表达式,那么操作符右边的表达式就不会进行判断。@Test public void test1(){ int i = 0; if(false && i++ > 0){ //左侧表达式为false,&&操作,通过左侧已经可以判断整个表达式 } System.out.println(i); //0 -------------------------------------------- int j = 0; if(true || j++ > 0){ //左侧表达式为true, ||操作, 通过左侧已经可以判断整个表达式 } System.out.println(j); //0 }
3、比较操作符
== 、 > 、>= 、< 、<= 、 !=
4、赋值操作符
=、+= 、-= 、 *= 、/= 、%= 、&= 、^= 、 |=@Test public void test2(){ int i = 0; i += 1; //等价于 i = i + 1; System.out.println(i); //其他的类似 }
5、按位操作符
& 、 | 、 ^ (异或) 、~(取反)
介绍:
以上的操作符为位运算操作符,左右两侧可以是整数、字母、或者boolean表达式@Test public void test3(){ System.out.println(~'a'); //-98 System.out.println(3 ^ 2); //1 System.out.println(true ^ false); //true }
~:即按位取相反数
比如:字符
a
对应数字97,二进制为0000000000000000000000000001100001,~操作后为11111111111111111111111110011110,互补后(-(取反 + 1))即为-98。
^:即相异1,相同为0(相异为true,相同为false)
比如:3^2,二进制为…0011 ^ …0010,异或操作后为…0001,即为1,负数也是类似的。
注意:
(1)、&、| 并没有短路现象,左右两边均会判断。
(2)、除 ~ 外可以配合 = 使用。
(3)、boolean表达式可以配合按位操作符使用,~除外(为了区别 “!”)。@Test public void test4(){ System.out.println(~(2 > 1)); //报错 int i = 0; System.out.println(i ^= 1); System.out.println(i &= 1); System.out.println(i |= 1); System.out.println(i ~= 1); //报错 }
6、移位操作符
<<(左移)、>>(右移)、>>>(无符号右移)
介绍:
<<(左移):即数字带符号向左移位,左边高位丢弃,右边低位补0。
>>(右移):即数字带符号右移,被移位的二进制最高位是0(+),右移后,空缺位补0,最高位为1(-),右移后,空缺位补1。
>>>(无符号右移):被移位的最高位无论是否是0或1,空缺位都用0补
。@Test public void test1(){ //<< System.out.println(Integer.toBinaryString(3)); //11 System.out.println(Integer.toBinaryString(3<<1)); //110 System.out.println(Integer.toBinaryString(-3));//11111111111111111111111111111101 System.out.println(Integer.toBinaryString(-3<<1));//11111111111111111111111111111010 //>> System.out.println(Integer.toBinaryString(3)); //11 System.out.println(Integer.toBinaryString(3>>1)); //1 System.out.println(Integer.toBinaryString(-3));//11111111111111111111111111111101 System.out.println(Integer.toBinaryString(-3>>1));//11111111111111111111111111111110 //>>> System.out.println(Integer.toBinaryString(3)); //11 System.out.println(Integer.toBinaryString(3>>>1)); //1 System.out.println(Integer.toBinaryString(-3));//11111111111111111111111111111101 System.out.println(Integer.toBinaryString(-3>>>1));//01111111111111111111111111111110 }
7、三元操作符
boolean表达式 ? 表达式1:表达式2;
示例:@Test public void test1(){ int i = 2 > 1 ? 2 : 1; }
标签:System,操作符,println,左向右,JavaSE,表达式,out 来源: https://blog.csdn.net/qq_43341842/article/details/113004362