03--Java 运算符

系列文章专栏

JavaSE自学全路线



一、算术运算符

1.1 基本的算术运算符

运算运算符表示举例结果
正号++33
负号-b=3;-b-3
+5+510
-3-21
*2*36
/6/23
取模(取余)%7%52
自增(前):先自增1后运算++a=2;b=++aa=3;b=3
自增(后):先运算后自增1++a=2;b=a++a=3;b=2
自减(前):先运算后取值a=2;b=–aa=2;b=2
自减(后):先取值后运算a=2;b=a–a=2;b=3
字符串连接+“he"+“llo”“hello”

1.2 部分代码示例

1.2.1 除法

注意:运算顺序和规则(结果 int 型还是 double 型)

public class AirTest {
    public static void main(String []args) {
    	int num1 = 12;
    	int num2 = 5;
    	int result1 = num1 / num2;  // 输出2
   	System.out.println(result1);
  
    	int result2 = num1 / num2 * num2;   // 输出10
    	System.out.println(result2); 
  
    	double result3 = num1 / num2;  // 输出2.0
    	System.out.println(result3);
  
   	double result4 = num1 / (num2 + 0.0);  // 输出2.4
   	 System.out.println(result4);
  
    	double result5 = (double)num1 / num2;  // 输出2.4
    	System.out.println(result5);
    }
}

1.2.2 取模

注意:结果的符号与被模数符号一致,常用来判断能否整除

public class AirTest {
    public static void main(String []args) {
  	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
    }
} 

1.2.3 自增

注意:自增1不会改变变量本身的数据类型

public class AirTest {
    public static void main(String []args) {
  	int a1 = 10;
  	int b1 = ++a1;
  	System.out.println("a1 = " + a1 + ", b1 = " + b1);   // 输出a1 = 11, b1 = 11
  	
  	int a2 = 10;
  	int b2 = a2++;
  	System.out.println("a2 = " + a2 + ", b2 = " + b2);   //  输出a2 = 11, b2 = 10
    }
}

二、赋值运算符

2.1 基本赋值运算符

基本赋值运算符符号:=
说明:支持连续赋值

public class AirTest {
	public static void main(String []args) {
		int a1, b1;
  		a1 = b1 = 10;  // 连续赋值
 		int a2 = 10, b2 = 20;  // 逗号隔开
  		System.out.println("a1 = " + a1 + ", b1 = " + b1 + ", a2 = " + a2 + ", b2 = " + b2);  
 	}
}

2.2 扩展赋值运算符

拓展的赋值运算符符号:+=, -=, *=, /=, %=,不会改变变量本身的数据类型

public class AirTest {
    public static void main(String []args) {
  	// 变量实现加2的操作
 	int a1 = 10;
  	a1 = a1 + 2;  // 非int型可能编译不通过
  	a1 += 2; // 更推荐
  	System.out.println("a1 = " + a1);  

	int n = 10;
 	n += (n++) + (++n); // n = n + (n++) + (++n)
  	System.out.println(n); //32
 }
}

三、比较运算符

比较运算符:==,!=,>,<,>=,<=,instanceof
注意:比较运算符的结果都是boolean型,也就是要么是 true,要么是 false

四、逻辑运算符

  • &—逻辑与:左边无论真假,右边都进行运算
  • && —短路与:如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算,更推荐使用
public class AirTest {
    public static void main(String []args) {
  	boolean a1 = false;
  	int b1 = 10;
  	if(a1 & (b1++ > 0)){
   		System.out.println("可以");
  	}else{
   		System.out.println("不可以");
  	}
  	System.out.println(b1);
  
  	boolean a2 = false;
  	int b2 = 10;
  	if(a2 && (b2++ > 0)){
   		System.out.println("可以");
  	}else{
   		System.out.println("不可以");
  	}
  	System.out.println(b2);  // 已知结果,右边不参与运算
   }
}
  • | —逻辑或:左边无论真假,右边都进行运算
  • || —短路或:如果左边为假,右边参与运算,如果左边为真,那么右边不参与运算,同上
  • !—逻辑非:!a,与a原本相反
  • ^ —逻辑异或:a^b,ab不同则为真

五、位运算符(了解)

运算运算符表示举例结果说明
左移<<3<<212在一定范围内,每向左移一位,相当于 * 2
右移>>3>>11在一定范围内,每向右移一位,相当于 / 2,空位用1补
无符号右移>>>3>>>11高位空出的的用0补
&12&54二进制各位,同1则1
同逻辑或12或5(用符号)13二进制各位,有1则1
异或^12^59二进制各位,不同则1
取反~~6-7取反

六、三元运算符

格式:(条件表达式)? 表达式1 : 表达式2;
说明:条件表达式结果为布尔型,真执行表达式1,假执行表达式2;表达式1、2为同种类型
注意:三元运算符可嵌套使用,可改写为 if-else 语句,反之不一定能改写

public class AirTest {
    public static void main(String []args) {
  	int a1 = 15;
  	int b1 = 15;
  	String str  = (a1 > b1)? "a1大" : ((a1 == b1)? "a1和b1相等" : "b1大"); //三元运算符可以嵌套
  	System.out.println(str);  
    }
}

七、运算符的优先级

运算级从高到低依次是(不需要记忆):

  • () . ; {} ,
  • ++ – ~ !
  • / % *
  • 加 减
  • << >> >>>
  • <= >= < > instanceof
  • == !=
  • &
  • ^
  • |
  • &&
  • ||
  • ? :
  • = *= /= %=

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值