您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

java学习之运算符及运算符优先级

一:算术运算符

+正号;加;连接运算
-负号;减
*
/除(取商)
%取余
++自增
--自减

 

 

 

 

 

 

 

 

public class test3 {

	public static void main(String[] args) {
		int a=5,b=4;
		System.out.println("a is"+a);              //正号
		System.out.println("-b is"+(-b));          //负号
		System.out.println("a+b is"+(a+b));        //加法
		System.out.println("a-b is"+(a-b));        //减法
		System.out.println("a*b is"+a*b);          //乘法
		System.out.println("a/b is"+a/b);          //除法,因为是int型计算结果自动为int值为1
		System.out.println("a%b is"+a%b);          //取余
		System.out.println(a++);                   //先赋值后运算,输出值为5,内部存储值为6 
		System.out.println(++a);                   //先运算后赋值,输出值为7,内部存储值为7
		System.out.println(b--);                   //先运算后赋值,输出值为4,内部存储值为3
		System.out.println(--b);                   //先运算后赋值,输出值为2,内部存储值为2
        System.out.println("He"+"llo");            //字符串连接运算,输出 Hello
	}

}

二:赋值运算符

 

a=b赋值
a+=b相当于a=a+b
a-=b相当于a=a-b
a*=b相当于a=a*b
a/=b相当于a=a/b
a%=b相当于a=a%b

 

 

 

 

 

 

 

 

public class Test4 {

	public static void main(String[] args) {
		int a=1,b=2;
		System.out.println(a=b);         //2
		System.out.println(a+=b);        //4
		System.out.println(a-=b);        //2
		System.out.println(a*=b);        //4
		System.out.println(a/=b);        //2
		System.out.println(a%=b);        //0
		
	}

}

三 :比较运算符

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

 

 

 

 

 

 

 

比较运算符的结果都是 boolean 型,也就是要么是 true ,要么是 false
 
四:逻辑运算符
&逻辑与         | 逻辑或           !逻辑非
&& 短路与     ||—短路或        ^ 逻辑异或
aba&ba&&ba|ba||b!aa^b
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetruetrue
falsefalsefalsefalsefalsefalsetruefalse
 

 

 

 

 

 

逻辑运算符用于连接布尔型表达式,在 Java 中不可以写成 3<x<6 ,应该写
成x>3 & x<6 或x>3 && x<6 。
 
&” 和“ &&” 的区别:“|”和“||”同理
& 时,左边无论真假,右边都进行运算;
& 时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
 
public class Test5 {

	public static void main(String[] args) {
		int x=1,y=1;
		if(x++==2 & ++y==2){        //false&true
		x =6;                       //false 不执行 
		}
		    System.out.println("x="+x+",y="+y);            //x=2,y=2


		if(x++==3 && ++y==3){        //false&&不判断
			x =6;                    //false
			}
			System.out.println("x="+x+",y="+y);            //x=3,y=2


		if(x++==3 | ++y==3){        //true|true
			x =6;                   // true
			}
			System.out.println("x="+x+",y="+y);            //x=6,y=3


		if(x++==6|| ++y==5){        //true||不判断
			x =10;                   //true
			}
			System.out.println("x="+x+",y="+y);            //x=10,y=3
		
	}

}

五:位运算符

<<左移3<<2=12
>>右移4>>1=2
>>>无符号右移4>>>1=2
&3&2=2
|3|2=3
^异或3^2=1
~取反~3=-4

 

 

 

 

 

 

 

 

<<  左移3<<2

0000 0011   左移两位,低位补0    0000  1100

>> 右移 4>>1           符号位是0补0,是1补1

0000 0100 >>1         0000  0010

1000 0101>>1         1100 0010

>>> 无符号右移 4>>1   符号位不论是0,是1,都补0

0000 0100>>>1         0000 0010

1000 0101>>>1          0100 0010

&与 二进制位进行&运算,只有1&1时结果是1,否则是0;     3&2=2

3            0000 0011

2            0000 0010

3&2       0000 0010

|
|或 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;   3|2=3

3            0000 0011

2            0000 0010

3|2         0000 0011

^异或  二进制位进行 ^ 运算,1^1=0 , 0^0=0 , 1^0=1 , 0^1=1       3^2=1

3             0000 0011

2             0000 0010

3^2         0000 0001

~取反 各二进制码按补码各位取反       ~3=-4

3                      0000 0011

取反                 1111 1100      高位为1,这是负数的补码

补码减一          1111 1011

求原码             1000 0100      值为-4

六:三元运算符

(条件表达式)?表达式1:表达式2;
条件表达式为true,运算后的结果是表达式1;
条件表达式为false,运算后的结果是表达式2;
 
 
 
(a>b)? a:b;
当a>b时返回a
反之返回b

 

 

 七,运算符优先级

1.  , ; () {} 
2++   --   ~   !  +正    -负自右向左
3*     /    %自左向右
4+加   -减自左向右
5<<     >>    >>>自左向右
6<    >     <=    >=     instanceof自左向右
7==       !=自左向右
8&自左向右
9^自左向右
10|自左向右
11&&自左向右
12||自左向右
13? :自右向左
14

=    +=   -=   *=   /=   %=   <<=  

>>=   >>>=   &=   ^=   !=

自右向左

 

只有单目运算符、三元运算符、赋值运算符是从右向左运算的。

 

 

 


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进