java-运算符(算术、赋值 =、关系、逻辑、三元、位运算符)

基本运算符与位运算符

算术运算符:两个操作数进行计算

+  加

-   减

*  乘

/  除(取整)

%  取余

例子:

class ArrayTest{
	public static void main(String[] args){	
		int num1 = 12;
		int num2 = 5;
		int num3 = num1 / num2;
		double num4 = num1 / num2 + 0.0;
		double num5 = (num1 + 0.0) / (num2 + 0.0);
		double num6 = num1 / (num2 + 0.0);
		System.out.println("num3="+num3);//2
		System.out.println("num4="+num4);//2.0
		System.out.println("num5="+num5);//2.4
		System.out.println("num6="+num6);//2.4
		
		//%取余运算
		int m1 = 12;
		int n1 =  5;
		System.out.println("m1%n1="+m1%n1);//2
		int m2 = -12;
		int n2 =  5;
		System.out.println("m2%n2="+m2%n2);//-2
		int m3 = 12;
		int n3 = -5;
		System.out.println("m3%n3="+m3%n3);//2
		int m4 = -12;
		int n4 = -5;
		System.out.println("m4%n4="+m4%n4);//-2	
	}
}

编译运行:

自增与自减

++  自增

--  自减

例子:

class ArrayTest{
	public static void main(String[] args){	
		//前++
		int a1 = 10;
		int b1 = ++a1;//a1自加1后赋值给b1
		System.out.println("a1="+a1+" "+"b1="+b1);
		//后++
		int a2 = 10;
		int b2 = a2++;//a2赋值给b2后再自加1
		System.out.println("a2="+a2+" "+"b2="+b2);
		//前--
		int a3 = 10;
		int b3 = --a3;//a3自减1后赋值给b3
		System.out.println("a3="+a3+" "+"b3="+b3);
		//后--
		int a4 = 10;
		int b4 = a4--;//a4赋值给b4后再自减1
		System.out.println("a4="+a4+" "+"b4="+b4);
	}
}

编译运行:

   a++比++a在运行速度上快一点,a--比--a在行速度上快一点。

赋值运算符:

=

扩展的赋值运算符:+=  *=   -=  /=   %=

例子:

class ArrayTest1{
	public static void main(String[] args){	
		//=
		int i1 = 10;
		int j1 = 10;
		
		//连续赋值
		int i2,j2;
		i2 = j2 = 10;
		
		int i3 = 10,j3 = 10;
		
		//*****************
		int num1 = 10;
		num1 +=2;//num1 = num1 + 2;
		System.out.println(num1);
		
		int num2 = 12;
		num2 %= 5;//num2 = num2 % 5;
		System.out.println(num2);
		
		short s1 = 10;
		//s1 = s1 + 2;编译失败   左边short   右边至少得用int接收
		s1 += 2;//不会改变变量本身的数值类型
		System.out.println(s1);
		
		//开发中,如果希望变量实现+2的操作,有几种方法?(int num = 10)
		//1.num = num + 2
		//2.num +=2(推荐)
	}
}

  编译运行:

关系运算符(会形成布尔表达式)--比较运算符

>

<

>=

<=

==  a=b赋值  a==b表判断

!=

逻辑运算符

短路逻辑运算符:

当使用与逻辑运算符(短路与)时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

当使用与逻辑运算符(短路或)时,在两个操作数只要有一个为true时,结果就为true,但是当得到第一个操作为true时,其结果就必定是true,这时候就不会再判断第二个操作了。

&& 短路与 ,与(并且), 都为真才为真  

|| 短路或,或(或者),只要有一个为真就为真

! 逻辑非(取反),  真变假,假变真

三元运算符(可以嵌套使用)

? : 布尔表达式?结果1:结果2    布尔表达式为真(true),获得结果1,否则为结果2

凡是有三元运算符的地方,都可以改写成if-else

位运算符:

&(非短路)   逻辑与,a&b按二进制求与

|(非短路)  逻辑或,a|b按二进制求或

^  逻辑异或,a^b异或 相同时为0,不同时为1    任何一个数与0异或,还是原来的那个数

 ~ 按位置求反   按二进制求反 1变0,0变1

a=27   16+8+2+1    00011011

~a=-27       11100101     符号位甩出去, 0011011   -27

移位运算符

a=26

a=a>>1右移运算符

整体往右移1位  00011010  右移后     0(符号位还是原来的)0001101 

a=13

结论:右移一位值为原来的一半,所以左移<<一位,值为原来的2倍。

a=20

a>>>1    a=10

a>>1  a=10

a=-20

a>>>1    a=2147483638(符号位丢了,0补了上去)

a>>1  a=-10

猜你喜欢

转载自www.cnblogs.com/SpringChuXin/p/13391126.html