Java语言的运算符详细解析


Java语言的运算符之一

Java语言的运算符详细解析之二

逻辑运算符

  1. && 表示逻辑与运算符,相当于"并且",同真为真,一假为假。

  2. || 表示逻辑或运算符,相当于"或者",一真为真,同假为假。

  3. ! 表示逻辑非运算符,相当于"取反",真为假,假为真。

  4. 注意事项

    逻辑运算符的操作数均为boolean表达式。

  5. 逻辑运算符的图解

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cVY9j3Iv-1625167254255)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210701031459412.png)]

  6. 逻辑运算符的短路特性

    1. 对于逻辑与运算符来说,若第一个表达式为假则结果为假,此时跳过第 二个表达式;
    2. 对于逻辑或运算符来说,若第一个表达式为真则结果为真,此时跳过第 二个表达式;
  7. 代码演示

    /*
        编程实现逻辑运算符的使用
     */
    public class LogicTest {
    	
    	public static void main(String[] args) {
    		
    		// 1.声明两个boolean类型的变量并初始化
    		boolean b1 = true;
    		boolean b2 = false;
    		// 2.打印变量的数值
    		System.out.println("b1 = " + b1); // b1 = true
    		System.out.println("b2 = " + b2); // b2 = false
    		
    		System.out.println("---------------------------------------------");
    		// 3.使用上述变量实现逻辑运算符的使用
    		boolean b3 = b1 && b2;
    		System.out.println("b3 = " + b3); // false
    		System.out.println(b1 && b2); // false   并且
    		System.out.println(b1 || b2); // true    或者
    		System.out.println(!b1);  // false       取反
    		System.out.println(!b2);  // true
    		
    		System.out.println("---------------------------------------------");
    		// 4.测试一下短路特性
    		int ia = 3;
    		int ib = 5;
    		// 对于逻辑与运算符来说,若第一个条件为假则整个表达式为假,此时跳过第二个表达式不执行
    		boolean b4 = (++ia == 3) && (++ib == 5);
    		System.out.println("b4 = " + b4); // false
    		System.out.println("ia = " + ia); // 4
    		System.out.println("ib = " + ib); // 5
    		
    		// 对于逻辑或运算符来说,若第一个条件为真则整个表达式为真,此时跳过第二个表达式不执行
    		boolean b5 = (++ia == 5) || (++ib == 5);
    		System.out.println("b5 = " + b5); // true
    		System.out.println("ia = " + ia); // 5
    		System.out.println("ib = " + ib); // 5
    	}
    }
    

条件/三目运算符

  1. 语法结构

    条件表达式? 表达式1: 表达式2

  2. 语法解析

    判断条件表达式是否成立,若成立则执行表达式1,否则执行表达式2

  3. 代码演示

    /*
        编程使用三目运算符查找最大值
     */
    
    import java.util.Scanner; 
     
    public class ThreeEyeTest {
    	
    	public static void main(String[] args) {
    		
    		// 1.提示用户输入两个整数并使用变量记录
    		System.out.println("请输入两个整数:");
    		Scanner sc = new Scanner(System.in);
    		int ia = sc.nextInt();
    		int ib = sc.nextInt();
    		
    		// 2.使用三目运算符找到最大值并打印
    		int max = ia > ib? ia: ib;
    		System.out.println("最大值是:" + max);
    		System.out.println("最大值是:" + (ia > ib? ia: ib));
    	}
    }
    

赋值运算符

  1. 简单赋值运算符

    = 表示赋值运算符,用于将=右边的数据赋值给=左边的变量,覆盖变量 原来的数值

  2. 复合赋值运算符

    +=、 -= 、 *= 、 /=、 …

  3. 代码演示

    /*
        赋值运算符的使用
     */
    public class AssignTest {
    	
    	public static void main(String[] args) {
    		
    		// 1.声明一个int类型的变量并初始化
    		int ia = 3;
    		// 2.打印变量的数值
    		System.out.println("ia = " + ia); // ia = 3
    		
    		System.out.println("-----------------------------------");
    		// 3.简单赋值运算符的使用
    		// 表示将数据5赋值给变量ia并且覆盖变量ia原来的数值
    		ia = 5;
    		System.out.println("ia = " + ia); // ia = 5
    		// 下面的代码是在打印表达式的结果
    		System.out.println( ia = 5 ); // 5
    		System.out.println("ia = " + ia); // ia = 5
    		int ib = ia = 6;
    		System.out.println("ia = " + ia); // ia = 6
    		System.out.println("ib = " + ib); // ib = 6
    		
    		System.out.println("-----------------------------------");
    		// 4.复合赋值运算符的使用
    		//ia = ia + 2; 
    		ia += 2;        // 简化写法,从结果上来看是等价的
    		System.out.println("ia = " + ia); // ia = 10
    		
    		System.out.println("-----------------------------------");
    		// 5.笔试考点1
    		byte b1 = 10;
    		System.out.println("b1 = " + b1); // b1 = 10
    		//b1 = b1 + 2; // 错误: 不兼容的类型: 从int转换到byte可能会有损失         byte + int 相加结果还是int类型
    		//b1 = b1 + (byte)2; // 错误: 不兼容的类型: 从int转换到byte可能会有损失   byte + byte 相加结果还是int类型  编译器优化
    		//b1 = (byte)(b1 + 2); // 强制类型转换,将int类型转换为byte
    		b1 += 2; // 真正等价于b1 = (byte)(b1 + 2);
    		System.out.println("b1 = " + b1); // b1 = 12
    		
    		System.out.println("-----------------------------------");
    		// 6.笔试考点2
    		//ia == 2; - 表示判断变量ia的数值是否等于2
    		//2 == ia; - 表示判断2是否等于变量ia的数值,从结果上来说等价,推荐该方式
    		//ia = 2;  - 表示将2赋值给变量ia,覆盖变量ia原来的数值
    		//2 = ia;  //- 编译报错  错误: 意外的类型
    	}
    }
    

移位运算符(了解)

  1. << 左移运算符,用于将数据的二进制位向左移动,右边使用0补充

  2. >> 右移运算符,用于将数据的二进制位向右移动,左边使用符号位补充

  3. >>> 表示逻辑右移运算符,用于将数据的二进制位向右移动,左边使用0 补充

  4. 代码演示

    /*
        编程实现移位运算符的使用
     */
    public class MoveBitTest {
    	
    	public static void main(String[] args) {
    		
    		// 1.声明一个byte类型的变量并初始化
    		byte b1 = 13;
    		// 2.打印变量的数值
    		System.out.println("b1 = " + b1); // b1 = 13
    		
    		System.out.println("---------------------------------------------------");
    		// 3.移位运算符的使用
    		// 13的二进制是:... 0000 1101  => 左移1位的结果是:... 0001 1010 => 换算为十进制整数是:26
    		//byte b2 = b1 << 1; // 错误: 不兼容的类型: 从int转换到byte可能会有损失   自动提升为int类型,也就是32位二进制
    		byte b2 = (byte)(b1 << 1); 
    		System.out.println("b2 = " + b2); // 26
    		System.out.println(b1 << 1); // 26    左移1位相当于当前整数的数值*2
    		System.out.println(b1 << 2); // 52    左移2位相当于当前整数的数值*4
    		
    		System.out.println("---------------------------------------------------");
    		// 13的二进制是:... 0000 1101 => 右移1位的结果是:... 0000 0110 => 换算为十进制整数是:6
    		System.out.println(b1 >> 1); // 6     右移1位相当于当前整数的数值/2
    		System.out.println(b1 >> 2); // 3     右移2位相当于当前整数的数值/4
    		
    		System.out.println("---------------------------------------------------");
    		// 逻辑右移   对于非负数来说,逻辑右移和右移的效果一致
    		System.out.println(b1 >>> 2); // 3  
    	}
    }
    

位运算符(了解)

  1. & 表示按位与运算符,按照二进制位进行与运算,同1为1,一0为0

  2. | 表示按位或运算符,按照二进制位进行或运算,一1为1,同0为0

  3. ~ 表示按位取反运算符,按照二进制位进行取反,1为0,0为1.

  4. ^ 表示按位异或运算符,按照二进制位进行异或运算,同为0,不同为1

  5. 代码演示

    /*
        编程实现位运算符的使用
     */
    public class BitTest {
    	
    	public static void main(String[] args) {
    		
    		// 1.声明两个byte类型的变量并初始化
    		byte b1 = 11;
    		byte b2 = 13;
    		// 2.打印变量的数值
    		System.out.println("b1 = " + b1); // b1 = 11
    		System.out.println("b2 = " + b2); // b2 = 13
    		
    		System.out.println("---------------------------------------------------");
    		// 3.实现位运算符的使用
    		// b1的二进制为: 0000 1011          
    		// b2的二进制为: 0000 1101
    		System.out.println( b1 & b2);  // 按位与:同1为1,一0为0      按位与后的二进制为:0000 1001  => 转为十进制是:9
    		System.out.println( b1 | b2);  // 按位或:一1为1,同0为0      按位或后的二进制为:0000 1111  => 转为十进制是:15
    		System.out.println( b1 ^ b2);  // 按位异或:相同为0,不同为1  按位异或的二进制为:0000 0110  => 转为十进制是:6
    		System.out.println( ~ b1);     // 按位取反:1为0,0为1         按位取反的二进制为:1111 0100 
    		// 二进制1111 0100转为十进制 => 先减1: 1111 0011 => 按位取反:0000 1100 => 转为十进制:12  => 添加负号:-12
    	}
    }
    

运算符的优先级

  1. 运算符的优先级图(无需全部记忆)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9XJZcG6P-1625167254258)(C:\Users\Administrator\Desktop\模块一 Java编程基础\03任务三 运算符\02_图片\02运算符的优先级.png)]

  2. 运算符的优先级总结

    1. ()的优先级极高
    2. =的优先级极低
    3. 若无法确认优先级,则使用()来确保即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白迷上java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值