Java中的运算符

算数运算符

取余 加加 减减
+ - * / % ++

++/–说明:

++--单独使用时,如:用在for循环中++a,a++效果一样,当遇到赋值运算时就不一样了如下:
int a = 10;
int b = a++; // 先赋值再加一(这里的b等于10)
int c = ++a; // 先加一再赋值(这里的c等于11)

比较运算符

大于 小于 等于 不等于
> < == !=

比较运算符的结果都是boolean类型(true 或 false)

赋值运算符

int a = 10;
a += 1; // 同a = a + 1;

逻辑运算符

and or 备注
&& ||

位运算符

运算符 解释
& 位与,有0则0
| 位或,有1则1
^ 位异或,相同则0,不同则1
~ 取反
>> 向右移,最高位是0,则左边补齐0,最高位是1,则左边补齐1
>>> 无符号右移,无论最高位是0还是1,左边补齐0
<< 向左移,左边最高位丢弃,右边补齐0
/*
	位运算符,主要操作二进制

		 位与,有0则0
		| 位或,有1则1
		^ 位异或,相同则0,不同则1
		~ 取反
		>> 向右移,最高位是0,则左边补齐0,最高位是1,则左边补齐1
		>>> 无符号右移,无论最高位是0还是1,左边补齐0
		<< 向左移,左边最高位丢弃,右边补齐0

		
*/

class Operator08 {
	public static void main(String[] args) {

		System.out.println(6 & 3); //2
		System.out.println(6 | 3); //7
		System.out.println(6 ^ 3); //5
		System.out.println(~6); //-7
		/*
			110
		&	011
		----------
			010	    就是十进制里面的2


			110
		|	011
		----------
			111	    就是十进制里面的7


			110
		^	011
		----------
			101    就是十进制里面的5


			00000000 00000000 00000000 00000110    正数6的反码,补码,原码都是其本身
			11111111 11111111 11111111 11111001	   对6取反,这里就得到了-7的补码
			00000000 00000000 00000000 00000001    减1
		----------------------------------------
			11111111 11111111 11111111 11111000    得到反码
			10000000 00000000 00000000 00000111    得到了-7
		*/


		System.out.println(12 >> 1); //12/2=6  
		System.out.println(12 >> 2); //12/4=3
		System.out.println(12 >> 3); //12/8 =1   向右移n位,则除以2的n次方
		System.out.println(12 << 1); //12*2=24
		System.out.println(12 << 2); //12*4=48
		System.out.println(12 << 3); //12*8=96   向左移n位,则乘以2的n次方

		
		//^的特点:一个数据对另一个数据位异或2次,则这个数据本身不变

		System.out.println(12 ^ 5 ^ 12);

		/*
			1、请实现两个整数变量的交换(不能使用第三方变量)
			2、最有效率的算出2 * 8的结果
		*/
		
		// 方法一
		/*
			int a = 8;
			int b = 6;
			
			a = a + b;//a=14  b=6
			b = a - b;//b=8
			a = a - b;//14-8=6

			有缺点,如果a+b超出了int类型的取值范围,则有可能损失精度
		*/

		//方法二
		int a = 8;
		int b = 6;
		a = a ^ b;
		b = a ^ b;//a ^ b ^ b,b=a
		a = a ^ b;//a ^ b ^ a, a=b

		System.out.println(2 << 3);//2 * (2*2*2)
	}
}
posted @ 2019-08-02 12:21  每一天,为明天。  阅读(101)  评论(0)    收藏  举报