【Java】位操作符 (2)

许多语言中的取模运算只能用于整数型,Java对此做了扩展,它允许对浮点数进行取模操作。例如,3%2 的结果是 1, 15.2%5 的结果是 0.2。取模操作还可以用于负数,结果的符号与第一个操作数的符号相同,例如,5%-3 的结果是 2,-5%3 的结果是-2。

此外,算术运算符还有“++”和“--”两种,分别称为加1和减1运算符。这两种运算符有前缀形式和后缀形式,含有有所不同。例如,i++ 和 ++i 的执行顺序是不一样的,i++ 在 i 使用之后再 +1,++i 在 i 使用之前先 +1。i-- 和 --i 的情况于此类似。

例子:

int i = 1; System.out.println(i++); //i++,使用之后+1,此处输出1 int i = 1; System.out.println(++i); //++i,先+1再使用,此处输出2 int i = 1; System.out.println(i--); //i--,使用之后-1,此处输出1 int i = 1; System.out.println(--i); //--i,先-1再使用,此处输出0 关系运算符

关系运算符用来比较两个值,包括大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)6种。关系运算符都是二元运算符,也就是每个运算符都带有两个操作数,运算的结果是一个逻辑值。Java允许“==”和“!=”两种运算符用于任何数据类型。例如,既可以判断两个数的值是否相等,也可以判断对象或数组的实例是否相等。判断实例时比较的是两个对象在内存中的引用地址是否相等。

逻辑运算符

逻辑运算符包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。前两个是二元运算符,后一个是一元运算符。Java对逻辑与和逻辑或提供“短路”功能,也就是在进行运算时,先计算运算符左侧的表达式的值,如果使用该值能得到整个表达式的值,则跳过运算符右侧表达式的计算,否则计算运算符右侧表达式,并得到整个表达式的值。

//逻辑与&&,有一个表达式的结果是false,整体就返回false String str = null; if(str != null && str.length0 > 2) { // str是null, &&左侧的表达式的结果是false,不会计算&&右侧的表达式,直接整体返回false } str= "abc"; if(str != null && str.length0> 5) { // &&左侧的表达式的结果是true,会接着计算&&右侧的表达式,右侧表达式的值是false,整个if中的表达式的结果就返回false } //逻辑或||,有一个表达式的结果是true,整体就返回true str= "qq"; if(str == null II str.length0== 2) { // ||左侧的表达式的结果是false,会接着计算||右侧的表达式,右侧结果是true, 则整体返回true } if(str != null II str.ength0 == 2) { // ||左侧的表达式的结果是true, 不会计算||右侧的表达式, 直接整体返回true } //逻辑非!,表达式结果是true,就返回false; 表达式结果是false,就返回true boolean flag = true; System.out.printIn(!flag); //输出false flag = false; System.out.printn(!flag); //输出true 位运算符

位运算符用来对二进制位进行操作,包括按位取反(~)、按位与(&)、按位或(|)、异或(^)、右移(>>)、左移(<<)和无符号右移(>>>)。位运算符只能对整数型和字符型数据进行操作。

1. 取反(~)

参加运算的一个数据,按二进制位进行“取反”运算。

运算规则:~1=0; ~0=1;

即:对一个二进制数按位取反,即将0变1,1变0。

2. 按位与(&)

参加运算的两个数据,按二进制位进行“与”运算。

运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;即:两位同时为“1,结果才为“1,否则为0。

例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3 & 5的值得1。

3. 按位或(|)

参加运算的两个对象,按二进制位进行“或”运算。

运算规则:0 | 0=0; 0 | 1=1; 1 | 0=1; 1 | 1=1;

即 :参加运算的两个对象只要有一个为1,其值为1。

例如:3 | 5,即 0000 0011 | 0000 0101 = 0000 0111 因此,3 | 5的值得7。

4. 异或(^)

参加运算的两个数据,按二进制位进行“异或”运算。

运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;

即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。

5. 左移(<<)

运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。例如: 12345 << 1,则是将数字12345左移1位:

【Java】位操作符

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpydxj.html