Java中的运算符(四)、位运算符和三元运算符
Java中的运算符(四)、位运算符和三元运算符
前言
*迟来的更新。先自己找一个迟到的理由:因为今天上午参加了一场考试,so更新晚了,勿怪勿怪!!!
一、位运算符
首先介绍一下Java中的位运算符。位运算符除了“按位与”和“按位或”运算符以外,其他职能用来处理数据类型是整数的操作数,它是完全针对位方面的操作。
整型数据在内存中以二进制的形式表示,如int类型的变量7的二进制表示是:
00000000 00000000 00000000 00000111
左边最高位是符号位,最高位若为0表示正数,若为1表示负数。负数采用补码表示,如-8的二进制表示为11111111 11111111 11111111 11111000.这样就可以对整型数据进行按位运算。
1.按位与运算
按位与运算的运算符是(&),是双目运算符。
运算法则:
如果两个整型数据a、b对应位都是1,则结果位才是1,否则为0。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
2.按位或运算
按位或运算的运算符为(|),也是双目运算符。
运算法则:
如果两个操作数的对应位都是0,则结果才是0,否则为1。如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
3.按位取反运算
按位取反也叫按位非运算,运算符为(~),它是单目运算符。按位取反就是将操作数二进制中的1修改为0,0修改为1.
4.按位异或运算
按位异或运算的运算符是(^),它是双目运算符。
运算法则:
当两个操作数的二进制表示相同(同时为0或者同时为1)时,结果为0否则为1.如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
5.移位操作
除了上述运算符外,还可以对数据进行按二进制位进行移位操作。Java中的移位运算符有3种。
(<<) 左移
(>>) 右移
(>>>)无符号右移
左移就时将运算符左边的操作数的二进制数据按照运算符右边操作数指定的为数向左移动,右边移空的部分补0.右移则复杂一些。当使用(>>)符号时,如果最高位是0,右移空的位就填入0;如果最高位是1,右移空的位就填入1。而无符号右移,无论最高位是0还是1,左侧被移空的高位都填入0.
注意:
移位运算符使用的数据类型有byte short int long char
三元运算符
三元运算符的使用格式为:
条件式? 值1:值2
三元运算符的运算规则为:
若条件式的值为true,整个表达式取值1,否则取值2:
boolean b = 20<45?true:false;
三元运算符等价于if…else语句,代码如下:
public class Test3 { //创建类
public static void main(String[] args) { //主方法
boolean a; //声明boolean类型的变量a
if (20<45) {
a = true;
}else{
a = false;
}
System.out.println(a);
}
}
运行结果:
关注我,持续更新!!!