【2023,学点儿新Java-51】变量与运算符 (阶段性复习3):常用运算符回顾之比较运算符、逻辑运算符、条件运算符、了解位运算符

2023-07-28 12:03:41

前情提要:

 
小时候学诗 不懂诗中情感,长大了 经历了一些事情,真的明白了诗中情感。

 
在这里插入图片描述

 

🎯作者主页: 追光者♂🔥

        

🌸个人简介:
 
💖[1] 计算机专业硕士研究生💖
 
🌟[2] 2022年度博客之星人工智能领域TOP4🌟
 
🏅[3] 阿里云社区特邀专家博主🏅
 
🏆[4] CSDN-人工智能领域优质创作者🏆
 
📝[5] 预期2023年10月份 · 准CSDN博客专家📝  
 

  • 无限进步,一起追光!!!

        

🍎感谢大家 点赞👍  收藏⭐   留言📝!!!

        

🌿本篇依然继续是阶段复习,关于比较运算符、逻辑运算符、了解位运算符以及条件运算符等知识,注:此为JavaSE基础内容,适用于Java入门者练习,有经验的朋友可略过哈!

🥪常用运算符回顾

注:这部分知识此前已讲过,这里仅以代码再次作为示例来简单回顾一下!

🍉1.1 比较运算符

/*
测试运算符的使用3:比较运算符

1.  ==  !=  >   <   >=   <=  instanceof

2. 说明
① instanceof 在面向对象的多态性的位置讲解。
② ==  !=  >   <   >=   <= 适用于基本数据类型。(细节:>   <   >=   <=不适用于boolean类型)
  运算的结果为boolean类型。
③ 了解: ==  !=  可以适用于引用数据类型
④ 区分:== 与 = 

*/
class XCompareTest_230728 {
	public static void main(String[] args) {
		int m1 = 10;
		int m2 = 20;
		boolean compare1 = m1 > m2;
		System.out.println(compare1);

		int n1 = 10;
		int n2 = 20;
		System.out.println(n1 == n2);//false
		System.out.println(n1 = n2);//20

		boolean b1 = false;
		boolean b2 = true;
		System.out.println(b1 == b2);//false
		System.out.println(b1 = b2);//true

	}
}

测试输出:

在这里插入图片描述

 

🍉1.2 逻辑运算符

/*
测试运算符的使用4:逻辑运算符
1.  & &&  |  ||  ! ^
2. 说明:
① 逻辑运算符针对的都是boolean类型的变量进行的操作
② 逻辑运算符运算的结果也是boolean类型。
③ 逻辑运算符常使用条件判断结构、循环结构中
*/

class XLogicTest_230728 {
	public static void main(String[] args) {
				
		/*
		区分:& 和 &&
		
		1、相同点:两个符号表达的都是"且"的关系。只有当符号左右两边的类型值均为true时,结果才为true。

		2、执行过程:
			1)如果符号左边是true,则& 、&& 都会执行符号右边的操作
			2)如果符号左边是false,则 & 会继续执行符号右边的操作
			                           && 不会执行符号右边的操作
		3、开发中,我们推荐使用&& 
		*/
		boolean b1 = true;
		b1 = false;

		int num1 = 10;

		if(b1 & (num1++ > 0)){
			System.out.println("床前明月光");
		}else{
			System.out.println("啊哈哈哈哈");
		}
		
		System.out.println("num1 = " + num1);

		//

		boolean b2 = true;
		b2 = false;

		int num2 = 10;

		if(b2 && (num2++ > 0)){
			System.out.println("床前明月光");
		}else{
			System.out.println("56789");
		}
		
		System.out.println("num2 = " + num2);

		//********************************************
		/*
		区分:| 和 ||
		
		1、相同点:两个符号表达的都是"或"的关系。只要符号两边存在true的情况,结果就为true.

		2、执行过程:
			1)如果符号左边是false,则| 、|| 都会执行符号右边的操作
			2)如果符号左边是true,则 | 会继续执行符号右边的操作
			                          || 不会执行符号右边的操作
		3、开发中,我们推荐使用||
		*/
		boolean b3 = false;
		b3 = true;

		int num3 = 10;

		if(b3 | (num3++ > 0)){
			System.out.println("床前明月光");
		}else{
			System.out.println("上山打老虎");
		}
		
		System.out.println("num3 = " + num3);

		//

		boolean b4 = false;
		b4 = true;

		int num4 = 10;

		if(b4 || (num4++ > 0)){
			System.out.println("床前明月光");
		}else{
			System.out.println("你吃的什么");
		}
		
		System.out.println("num4 = " + num4);
	}
}

在这里插入图片描述

 

附:补充练习

/*
1. 定义类 LogicExer
2. 定义 main方法
3. 定义一个int类型变量a,变量b,都赋值为20
4. 定义boolean类型变量bo1 , 判断++a 是否被3整除,并且a++ 是否被7整除,将结果赋值给bo1
5. 输出a的值,bo1的值
6. 定义boolean类型变量bo2 , 判断b++ 是否被3整除,并且++b 是否被7整除,将结果赋值给bo2
7. 输出b的值,bo2的值

*/
class XXLogicExer_230728 {
	public static void main(String[] args) {
		int a,b;
		a = b = 20;
		
		boolean bo1 = (++a % 3 == 0) && (a++ % 7 == 0);

		System.out.println("a = " + a + ",bo1 = " + bo1);

		
		boolean bo2 = (b++ % 3 == 0) && (++b % 7 == 0);
		
		System.out.println("b = " + b + ",bo2 = " + bo2);
		

	}
}

在这里插入图片描述

 

 

🍉1.3 位运算符(了解即可)

/*
测试运算符的使用5:位运算符

1. <<   >>   >>>   &  |  ^  ~

2. 说明:

① <<   >>   >>>   &  |  ^  ~ :针对数值类型的变量或常量进行运算,运算的结果也是数值
② 
<< : 在一定范围内,每向左移动一位,结果就在原有的基础上 * 2。(对于正数、负数都适用)
>> : 在一定范围内,每向右移动一位,结果就在原有的基础上 / 2。(对于正数、负数都适用)

3. 面试题:高效的方式计算2 * 8 ? 

2 << 3 或 8 << 1

*/
class XBitTest_230728 {
	public static void main(String[] args) {
		int num1 = 7;
		System.out.println("num1 << 1 : " + (num1 << 1));
		System.out.println("num1 << 2 : " + (num1 << 2));
		System.out.println("num1 << 3 : " + (num1 << 3));
		System.out.println("num1 << 28 : " + (num1 << 28));
		System.out.println("num1 << 29 : " + (num1 << 29));//过犹不及

		int num2 = -7;
		System.out.println("num2 << 1 : " + (num2 << 1));
		System.out.println("num2 << 2 : " + (num2 << 2));
		System.out.println("num2 << 3 : " + (num2 << 3));

		System.out.println(~9);
		System.out.println(~-10);

				
	}
}

测试输出:

在这里插入图片描述

 

附:补充练习

/*
案例2:如何交换两个int型变量的值?String呢?
*/
class XUBitExer_230728 {
	public static void main(String[] args) {
		
		int m = 10;
		int n = 20;

		System.out.println("m = " + m + ",n = " + n);

		//交换两个变量的值
		//方式1:声明一个临时变量。(推荐)
		//int temp = m;
		//m = n;
		//n = temp;

		//方式2:优点:不需要定义临时变量。  缺点:难、适用性差(不适用于非数值类型)、可能超出int的范围
		//m = m + n; //30 = 10 + 20;
		//n = m - n; //10 = 30 - 20;
		//m = m - n; //20 = 30 - 10;

		//方式3:优点:不需要定义临时变量。  缺点:真难、适用性差(不适用于非数值类型)
		m = m ^ n;
		n = m ^ n;//(m ^ n) ^ n ---> m
		m = m ^ n;


		System.out.println("m = " + m + ",n = " + n);
		

	}
}

输出结果如下:

在这里插入图片描述
 

🍉1.4 条件运算符

/*
测试运算符的使用6:条件运算符

1. (条件表达式)? 表达式1 : 表达式2

2. 说明:
① 条件表达式的结果是boolean类型。
② 如果条件表达式的结果是true,则执行表达式1。否则,执行表达式2。
③ 表达式1 和 表达式2 需要是相同的类型或能兼容的类型。

④ 开发中,凡是可以使用条件运算符的位置,都可以改写为if-else。
          反之,能使用if-else结构,不一定能改写为条件运算符。
  
  建议,在二者都能使用的情况下,推荐使用条件运算符。因为执行效率稍高。

*/
class XCConditionTest_230728 {
	public static void main(String[] args) {
		
		String info = (2 > 10)? "表达式1" : "表达式2";
		System.out.println(info);

		double result = (2 > 1)? 1 : 2.0;
		System.out.println(result);

		//练习1:获取两个整数的较大值
		int m = 10;
		int n = 20;

		int max = (m > n)? m : n;
		System.out.println("较大值为:" + max);

		//练习2:获取三个整数的最大值
		int i = 20;
		int j = 30;
		int k = 23;

		int tempMax = (i > j)? i : j;
		int finalMax = (tempMax > k)? tempMax : k;
		System.out.println(finalMax);

		//合并以后的写法:不推荐
		int finalMax1 = (((i > j)? i : j) > k)? ((i > j)? i : j) : k;
		System.out.println(finalMax1);
	}
}

练习结果输出:

在这里插入图片描述
 

此外:关于 运算符的优先级

  • 如果 想体现 优先级比较高使用()
  • 建议:在编写一行执行语句时,不要出现太多的运算符。

🍉1.5 本篇code获取

 


 

🍒 热门专栏推荐

 

持续创作优质好文ing…✍✍✍

 

记得一键三连哦!!!

 

求关注!求点赞!求个收藏啦!

在这里插入图片描述

更多推荐

React 如何拿时间戳计算得到开始和结束时间戳

获取需要的时间戳(开始and结束时间戳)调用如下方法就行:functiongetWantTimestamp(props){//当前时间constnowDate=parseInt((newDate().getTime()/1000).toString());//当前时间switch(props){//当前时间时间戳cas

网站整站优化-网站整站优化工具

您是否曾为您的网站在搜索引擎中的排名而感到焦虑?是否苦苦思考如何提高流量、吸引更多用户?什么是整站优化。简而言之,它是一项用于提升网站在搜索引擎中排名的策略和技巧。通过对网站的内容、结构、速度等方面进行优化,可以使网站更容易被搜索引擎收录,从而提高在搜索结果中的排名。而147SEO工具是一款为您提供整站优化解决方案的强

【C++】搜索二叉树底层实现

目录一,概念二,实现分析1.插入(1.)非递归版本(2.)递归版本2.打印搜索二叉树3.查找函数(1.)非递归版本(2.)递归版本4.删除函数(重难点)易错点分析,包你学会(1.)删除目标,没有左右孩子(2.)删除目标,只有一个孩子(3.)删除目标,有两个孩子代码(1.)非递归版本(2.)递归版本5.析构函数6.拷贝构

两数之和 三数之和【基础算法精讲 01】

灵神算法基础算法精讲[01]:两数之和三数之和【基础算法精讲01】_哔哩哔哩_bilibili167.两数之和II-输入有序数组链接:力扣(LeetCode)官网-全球极客挚爱的技术成长平台思路:采用双指针的思想,因为给出的数组是有序的,n=len(numbers),定l=0,r=n-1;如果s=numbers[l]+

监控数据的采集方式及原理

采集方法使用频率从高到低依次是读取/proc目录、执行命令行工具、远程黑盒探测、拉取特定协议的数据、连接到目标对象执行命令、代码埋点、日志解析。读取/proc目录/proc是一个位于内存中的伪文件系统,而在该目录下保存的不是真正的文件和目录,而是一些“运行时”信息,Linux操作系统层面的很多监控数据,比如内存数据、网

Go编程规范

文章目录注释转义符定义变量方法一:指定变量类型,声明后若不赋值,使用默认值方法二:根据值自行判定变量类型(类型推导)方法三:省略var,注意:=左侧的变量不应该是已经声明过的,否则会导致编译错误[`推荐`]全局变量和局部变量fmt.Printf查看变量常量iota定义函数多行书写参考注释//单行注释/*多行注释第一行第

javabean项目专项练习(1) 文字格斗游戏

main中是这样写的如下是character类的描述总结一下(个人):这是一题面向对象的编程,个人编程后感是:核心就是在于自己会不会取定义一个类,如果是多个对象(同一个类),能不能捋顺类的方法的关系,个人觉得黑马程序员up主给出来的分析方法特别好用.步骤:先把在类里该该弄得弄好,然后看题目需求的打印方法,我们可以根据题

idea Terminal 回退历史版本 Git指令 git reset

——————强制回滚历史版本——————一、ideaTerminal第一步:复制版本号(右击项目–>Git-->ShowHistory-->选中要回退的版本–>CopyRevisionNumber,直接复制;)第二步:ideaTerminal(确认项目)输入指令:gitreset--hard版本号示例:gitreset

【计算机组成原理】第一章部分课后题

冯·诺依曼型计算机的主要设计思想是什么?它包括哪些主要组成部分?冯·诺依曼型汁算机的其本没计思想为:①以二进制形式表示指令和数据②程序和数据事先放在存储器中,计算机在工作时够高速地从存储器中取出指令加以执行③由运算器、控制器、存储器、输入设备和输出设备五大部分组成计算机硬件系统它的主要组成部分为:运算器、控制器、存储器

数据治理-分类法

分类法是一种命名结构,包含用于概述主题、启用导航和搜索系统的受控词表。分类法有助于减少歧义并控制同义词,层次分类法包含了对索引者和搜索者都有帮助的多种类型的父/子关系。这样的分类法常用于向下扩展分类。分类法可以有多种不同的结构:扁平分类法:在受控类别集之间没有关系,所有类别都是平等的。这类似于列表。例如,一个包含多个多

[CISCN 2019 初赛]Love Math 通过进制转换执行命令

目录hex2binbin2hexbase_convert动态函数第一种解法通过get获取参数绕过第二种解法读取请求头getallheadersechoa,b第三种解法异或获得更多字符这道题也是很有意思!通过规定白名单和黑名单指定了函数为数学函数并且参数也只能是规定在白名单中的参数我们首先要了解通过进制转换执行命令的第一

热文推荐