运算符基本分为六类:
算数运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、三元(条件)运算符。
算数运算符
算数运算符,是指在Java运算中,计算数值类型的计算符号,既然是操作数值类型的运算符号,那么就包括整型和浮点型的计算。
求9870(除模取余)
个位:9870%10 = 0
十位:9870/10%10 = 7
百位:9870/100%10 = 8
千位:9870/1000 = 9
自增:
int a = 4;
a++ 《=====》 a = a+1
++a先加后用
a++先用后加
自减:
int a = 4;
a-- 《=====》 a = a-1
--a先加后用
a--先用后加
重点提示:
1、许多语言中的取模运算只能用于整数型,Java对此做了扩展,它允许对浮点数进行取模操作。例如,3%2 的结果是 1, 15.2%5 的结果是 0.2。取模操作还可以用于负数,结果的符号与第一个操作数的符号相同,例如,5%-3 的结果是 2,-5%3 的结果是-2。
2、“+”不仅可以将非字符串数据相加,还可以有字符串拼接的作用,“+”两侧的操作数中只要有一个是字符串类型,系统会自动将另一个操作数转换为字符串然后再进行连接
赋值运算符
赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。
除了“=”,其它的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,首先会进行加法运算x+3,再将运算结果赋值给变量x。-=、*=、/=、%=赋值运算符都可依此类推。
比较运算符
关系运算符用来比较两个值的关系。关系运算符都是二元运算符,也就是每个运算符都带有两个操作数,运算的结果是一个逻辑值。Java允许“==”和“!=”两种运算符用于任何数据类型。例如,既可以判断两个数的值是否相等,也可以判断对象或数组的实例是否相等。判断实例时比较的是两个对象在内存中的引用地址是否相等。
比较运算符的结果都是boolean类型,结果只有true与false
比较运算符“==”不能写成“=”
逻辑运算符
逻辑运算符包括逻辑与(&)、逻辑或(|)和逻辑非(!)。前两个是二元运算符,后一个是一元运算符。
逻辑与:指的是两者都。
两者都为真结果为真,其他情况都为假。
逻辑或
只要一个为真结果就为真,全部为假结果为假
逻辑非
取反
位运算符
位运算符用来对二进制位进行操作,包括按位取反(~)、按位与(&)、按位或(|)、异或(^)、右移(>>)、左移(<<)和无符号右移(>>>)。位运算符只能对整数型和字符型数据进行操作。
假设,A=60,B=13;它们的二进制表示如下
int a=60;//60=0011 1100
int b=13;//13=0000 1101
System.out.println(a&b);
//12=0000 1100
//12的二进制转十进制的方法
//1的2次方=4,1的3次方=8
//4+8=12
左移运算符:(二进制A=0011 1100=60)向左移动一位,相当于乘2(0111 1000=60*2=120),向左移动两位,相当于乘2再乘2(1111 0000=60*2*2=240);(十进制A=0011 1100=60)向左移动一位,相当于乘10(60*10=600),向左移动两位,相当于乘10再乘10(60*10*10=6000)。
右移运算符:和左移运算符方向相反。
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。
针对的是一个值
第一次:符号位与数据位全部取反
第二次:对取反后的二进制减一操作
第三次:除符号位以外数据再次取反
60:
第一次:+0011 1100(60)——>-1100 0011
第二次:-1100 0011---->- 1100 0010
第三次:-1100 0010--->-1011 1101(-61)
2的0次方=1,2的2次方=4,2的3次方=8,2的4次方=16,2的5次方=32
-(1+4+8+16+32)=-61
结果:-61
三元(条件)运算符
条件运算符( ? : )也称为 “三元运算符”或“三目运算符”。
语法形式:布尔表达式 ? 表达式1 :表达式2。(a>=b)? a:b
运算过程:如果布尔表达式的值为 true ,则返回 表达式1的值,否则返回 表达式2 的值。