深入理解Java关系运算符,避免常见错误!

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  在Java编程中,关系运算符是我们经常使用的基本操作符之一。在编写程序时,使用这些关系运算符可以比较变量之间的值,并根据比较结果执行不同的操作。本文将深入探讨Java中的关系运算符,帮助读者了解这些操作符的用法,避免常见的错误。

摘要

  本文首先介绍了Java中的关系运算符及其语法,然后通过源代码解析解释了这些运算符的工作原理,包括相等运算符、不等运算符、大于运算符、小于运算符、大于等于运算符和小于等于运算符。接下来,本文提供了一些实际应用场景案例,以帮助读者深入理解这些运算符的用途。此外,本文还考虑了这些运算符的优缺点,并提供了类代码方法介绍,测试用例和全文小结,以总结本文的主要内容。

Java之关系运算符

简介

什么是关系运算符?

  在Java中,关系运算符用于比较两个值之间的关系,例如比较两个数的大小或字符串是否相等等。Java中的关系运算符主要有以下几种:

运算符描述
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于

语法

  Java中的关系运算符基本语法如下:

value1 operator value2

  其中,value1和value2是要比较的两个值,operator是关系运算符。

源代码解析

相等运算符(==)

  相等运算符用于比较两个值是否相等。在Java中,相等运算符的用法可以分为两类:

  1. 比较两个引用类型的变量是否指向同一个地址;
  2. 比较两个基本数据类型的变量是否具有相同的值。

  以下是Java中相等运算符的示例代码:

public class Test {public static void main(String[] args) {// 比较两个引用类型的变量是否指向同一个地址String str1 = new String("Hello");String str2 = new String("Hello");System.out.println(str1 == str2); // falseSystem.out.println(str1.equals(str2)); // true// 比较两个基本数据类型的变量是否具有相同的值int a = 5;int b = 5;System.out.println(a == b); // true}
}

  在上述示例代码中,第一个比较操作输出false,因为str1和str2所指向的地址不同。而第二个比较操作输出true,因为变量a和b的值都是5。

代码解析:

  该代码定义了一个名为Test的类,其中包含一个名为main的方法。在main方法中:

  1. 创建了两个String类型的变量str1和str2,并分别赋值为"Hello",但使用了new操作符,因此它们指向不同的内存地址。

  2. 使用"=="操作符比较str1和str2的地址是否相同,结果为false,因为它们指向不同的内存地址。

  3. 使用equals()方法比较str1和str2的值是否相同,结果为true,因为它们的值都是"Hello"。

  4. 创建了两个int类型的变量a和b,并分别赋值为5。

  5. 使用"=="操作符比较a和b的值是否相同,结果为true,因为它们都是5。

  因此,该代码对比了两个引用类型和两个基本数据类型的值,并对它们进行了不同的比较操作。

不等运算符(!=)

  不等运算符用于比较两个值是否不相等。不等运算符的语法与相等运算符的语法相同,只是操作结果相反。以下是Java中不等运算符的示例代码:

public class Test {public static void main(String[] args) {// 比较两个引用类型的变量是否指向同一个地址String str1 = new String("Hello");String str2 = new String("Hello");System.out.println(str1 != str2); // trueSystem.out.println(!str1.equals(str2)); // false// 比较两个基本数据类型的变量是否具有相同的值int a = 5;int b = 5;System.out.println(a != b); // false}
}

  在上述示例代码中,第一个比较操作输出true,因为str1和str2所指向的地址不同。而第二个比较操作输出false,因为变量a和b的值都是5。

代码解析:

  这是一个Java程序,包含一个名为Test的类,类中有一个名为main的方法。该程序演示了如何比较Java中的变量。

  在程序中,首先创建了两个引用类型变量str1和str2,它们都指向一个新的字符串对象"Hello"。然后通过!=和equals方法分别比较它们是否指向同一个地址和是否具有相同的值。由于这两个变量指向不同的地址,所以!=的结果为true,但它们具有相同的值,因此equals方法的结果为false。

  接着,程序创建了两个基本数据类型变量a和b,它们具有相同的值5。因此,!=的结果为false。

  最后,程序输出了以上比较的结果。

大于运算符(>)

  大于运算符用于比较左侧的操作数是否大于右侧的操作数。以下是Java中大于运算符的示例代码:

public class Test {public static void main(String[] args) {int a = 5;int b = 3;System.out.println(a > b); // true}
}

  在上述示例代码中,变量a的值为5,变量b的值为3,因此输出true。

代码解析:

  这段代码定义了一个名为Test的类,并在该类中定义了一个名为main的静态方法。在main方法中,定义了两个整数变量a和b,并分别赋值为5和3。接着,使用大于号(>)比较a和b的大小,并将比较结果输出到控制台。

  由于a的值大于b的值,大于号返回true,因此输出结果为true。

小于运算符(<)

  小于运算符用于比较左侧的操作数是否小于右侧的操作数。以下是Java中小于运算符的示例代码:

public class Test {public static void main(String[] args) {int a = 5;int b = 3;System.out.println(a < b); // false}
}

  在上述示例代码中,变量a的值为5,变量b的值为3,因此输出false。

代码解析:

  这段代码定义了一个名为 Test 的公共类,其中包含一个名为 main 的公共静态方法。在 main 方法中,定义了两个 int 类型的变量 a 和 b,分别赋值为 5 和 3。接着,使用小于运算符 < 比较 a 和 b,因为 5 不小于 3,所以输出结果为 false。最后,执行结束,程序结束运行。

大于等于运算符(>=)

  大于等于运算符用于比较左侧的操作数是否大于或等于右侧的操作数。以下是Java中大于等于运算符的示例代码:

public class Test {public static void main(String[] args) {int a = 5;int b = 3;System.out.println(a >= b); // true}
}

  在上述示例代码中,变量a的值为5,变量b的值为3,因此输出true。

代码解析:

  这段代码定义了一个名为Test的类,并在其中定义了一个名为main的静态方法。在main方法中,首先定义了两个整型变量a和b,分别赋值为5和3。然后,在使用System.out.println()方法将比较表达式a >= b的结果输出到控制台。由于a大于等于b,所以比较表达式的值为true,代码会输出true。

小于等于运算符(<=)

  小于等于运算符用于比较左侧的操作数是否小于或等于右侧的操作数。以下是Java中小于等于运算符的示例代码:

public class Test {public static void main(String[] args) {int a = 5;int b = 3;System.out.println(a <= b); // false}
}

  在上述示例代码中,变量a的值为5,变量b的值为3,因此输出false。

代码解析:

  这段代码定义了一个名为 Test 的类,其中包含一个 main 方法。在 main 方法中,定义了两个 int 类型的变量 a 和 b,分别赋值为 5 和 3。然后使用小于等于运算符(<=)比较 a 和 b 的大小,将比较结果输出到控制台上,最终输出的结果为 false。这是因为 5 并不小于等于 3。

应用场景案例

判断字符串是否相等

  在Java中,使用相等运算符可以判断两个字符串是否相等。以下是一个示例代码:

public class Test {public static void main(String[] args) {String str1 = new String("Hello");String str2 = new String("Hello");if (str1 == str2) {System.out.println("str1 == str2");} else {System.out.println("str1 != str2");}}
}

  在上述示例代码中,通过使用相等运算符,可以判断str1和str2是否相等。如果相等,则输出"str1 == str2";否则输出"str1 != str2"。

代码解析:

  这段代码实现了如下功能:创建两个字符串对象 str1 和 str2,并将它们初始化为 “Hello”;然后,使用“==”运算符比较它们的引用是否相等。因为 str1 和 str2 是分别创建的两个对象,所以它们的引用并不相等,因此输出 “str1 != str2” 。

  需要注意的是,在 Java 中,对于字符串常量(即使用双引号括起来的字符串),Java 会自动维护一个字符串常量池(String Pool),如果创建的字符串对象和字符串常量池中的某个对象内容相同,那么就会返回该对象的引用。因此,要比较字符串内容是否相等,应该使用 equals() 方法,而不是“==”运算符。

判断数值是否在指定范围内

  在Java中,可以使用大于运算符和小于运算符来判断数值是否在指定范围内。以下是一个示例代码:

public class Test {public static void main(String[] args) {int score = 85;if (score >= 60 && score <= 100) {System.out.println("及格");} else {System.out.println("不及格");}}
}

  在上述示例代码中,通过使用大于等于运算符和小于等于运算符,可以判断score的分数是否在60~100之间。如果在此范围内,则输出"及格";否则输出"不及格"。

代码解析:
  这段代码的作用是判断一个整数变量score的值是否在60到100之间(包括60和100),如果是,则输出"及格",否则输出"不及格"。其中&&是逻辑运算符,表示两个条件都必须满足才能进入if语句。如果score小于60或大于100,则条件不满足,进入else语句输出"不及格"。

优缺点分析

优点

  Java中的关系运算符具有以下优点:

  1. 使用简单,易于理解;
  2. 可以比较两个基本数据类型或引用类型的变量;
  3. 可以进行多个条件的组合判断
  4. 关系运算符可以用于控制流语句,如if语句、while循环等;
  5. 在和其他操作符一起使用时,可以实现更多复杂的功能,如位运算、逻辑运算等。

缺点

  Java中的关系运算符也有一些缺点:

  1. 对于比较复杂的操作,关系运算符并不能很好地胜任,需要使用其他方法实现;
  2. 对于引用类型的比较,关系运算符比较的是两个引用变量是否指向同一个对象,而不是比较对象的内容是否相同。因此,需要使用equals()方法来比较对象的内容是否相同。

测试用例

下面是一个定义了关系运算符使用方法的测试用例。

测试代码演示

package com.example.javase.se.operators;/*** @Author ms* @Date 2023-11-06 22:04*/
public class RelationalOperatorDemo {public static void main(String[] args) {int x = 6;int y = 7;// 使用相等运算符if (x == y) {System.out.println("x == y");} else {System.out.println("x != y");}// 使用不等运算符if (x != y) {System.out.println("x != y");} else {System.out.println("x == y");}// 使用大于运算符if (x > y) {System.out.println("x > y");} else {System.out.println("x <= y");}// 使用小于运算符if (x < y) {System.out.println("x < y");} else {System.out.println("x >= y");}// 使用大于等于运算符if (x >= y) {System.out.println("x >= y");} else {System.out.println("x < y");}// 使用小于等于运算符if (x <= y) {System.out.println("x <= y");} else {System.out.println("x > y");}}
}

  该类代码定义了一个main()方法,其中包含了对所有关系运算符的使用方法。在运行该程序时,输出的结果将显示每个运算符的比较结果。

测试结果

  根据如上测试用例,本地测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加更多的测试数据或测试方法,进行熟练学习以此加深理解。

在这里插入图片描述

测试代码分析

  根据如上测试用例,在此我给大家进行深入详细的解读一下测试代码,以便于更多的同学能够理解并加深印象。
  这段代码演示了Java中的关系运算符,包括相等运算符、不等运算符、大于运算符、小于运算符、大于等于运算符和小于等于运算符。

  具体来说,代码中定义了两个整型变量x和y,并使用各种关系运算符对它们进行比较。通过if-else语句判断运算结果,然后打印出相应的结果。

运行程序输出结果为:

x != y

x != y

x <= y

x < y

x < y

x <= y

  以上结果的意义为:x不等于y,x不等于y,x小于等于y,x小于y,x小于等于y,x小于等于y。

  总之,这段代码主要展示了Java中关系运算符的使用方法和结果。

小结

  本文深入探讨了Java中的关系运算符的用法,并提供了实际应用场景案例。尽管这些运算符在Java编程中非常常用,但仍有一些需要注意的问题,例如对于引用类型的比较需要使用equals()方法等。因此,在编写代码时,需要充分了解这些运算符的优缺点,并根据具体的情况灵活运用。

总结

  本文详细介绍了Java中的关系运算符,包括相等运算符、不等运算符、大于运算符、小于运算符、大于等于运算符和小于等于运算符的用法及语法。同时,还提供了实际应用场景案例,帮助读者深入理解这些运算符的用途。文章还对这些运算符的优缺点进行了分析,并提供了类代码介绍和测试用例。在编写Java程序时,了解这些运算符的用法和注意事项,可以提高程序的开发效率和代码质量,避免一些常见的错误。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/21153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复现CELL文章图片,在线绘制scRNA-seq多个cluster的差异火山图

导读 火山图表示两组间的差异&#xff0c;而在scRNA-seq中&#xff0c;同时会有多个cluster&#xff08;vs其他cluster&#xff09;的差异。如果用常规火山图展示&#xff0c;可能需要绘制十几个图。有没有更高效的展示方法呢&#xff1f;今天给大家带来CELL文章“A Spatiotem…

打造SimPO新算法,微调8B模型超越Claude 3 Opus

前言 大型语言模型&#xff08;LLM&#xff09;近年来取得了巨大进展&#xff0c;但要将其与人类价值观和意图相一致&#xff0c;使其变得有用、诚实和无害&#xff0c;仍然是一个挑战。强化学习从人类反馈中&#xff08;RLHF&#xff09;是一种常用的方法&#xff0c;通过微调…

Charles的安装和web端抓包配置

1.Charles的安装 通过官网下载&#xff1a;https://www.charlesproxy.com/download/&#xff0c;我之前下载的是4.6.2版本&#xff0c;下载成功后点击安装包&#xff0c;点击下一步下一步即可安装成功。 ​​ ​ 安装成功后打开charles页面如下所示。 ​ 2.乱码问题解决 打开…

【C++】STL:栈和队列模拟实现

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

绘画参数配置及使用

绘画参数配置及使用 路径&#xff1a;站点后台-功能-AI绘画 进入参数配置 接口选择&#xff1a;多种接口自主选择&#xff08;需自己准备key&#xff09;&#xff0c;对应接口的key对话和绘画通用 存储空间&#xff1a; 位置在超管后台-存储空间 自主选择存储&#xff08;需…

【数据结构与算法】七大排序算法(下)

【数据结构与算法】七大排序算法(下) &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;数据结构与算法&#x1f345; &#x1f33c;文章目录&#x1f33c; 2.3 交换排序 2.3.1 冒泡排序 2.3.2 快速排序 2.3.3 快速排序(非递归) 2.4 归并…

fpga入门 串口定时1秒发送1字节

一、 程序说明 FPGA通过串口定时发送数据&#xff0c;每秒发送1字节&#xff0c;数据不断自增 参考小梅哥教程 二、 uart_tx.v timescale 1ns / 1psmodule uart_tx(input wire sclk,input wire rst_n,output reg uart_tx);parameter …

【Python Cookbook】S01E12 根据字段将记录分组

目录 问题解决方案讨论 问题 如果有一系列的字典或对象实例&#xff0c;我们想根据某个特定的字段来分组迭代数据。 解决方案 假设有如下字典列表&#xff1a; rows [{address: 5412 N CLARK, date: 07/01/2012},{address: 5148 N CLARK, date: 07/04/2012},{address: 580…

W25Q64CV SPI Flash Memory

SPI简介 SPI是一种同步串行通信接口规范&#xff0c;用于短距离通信&#xff0c;主要应用于嵌入式系统。SPI通信由一个主设备和一个或多个从设备组成&#xff0c;其中主设备生成时钟信号并控制通信的开始和结束。 SPI通信的基本组成 四个基本信号 SCK (Serial Clock) - 时钟…

centos7下安装MySQL,Oracle数据库

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 操作系统版本为CentOS 7 使⽤ MySQ…

python数据分析——datetime数据类型2

参考资料&#xff1a;活用pandas库 # 导入pandas库 import pandas as pd # 加载数据集 teslapd.read_csv(r"...\data\tesla_stock_yahoo.csv") # 查看数据 print(tesla.head()) 1、基于日期取数据子集 # 将Date数据列转换为datetime类型 tesla[Date]pd.to_datetime…

学习笔记——网络参考模型——TCP/IP模型(传输层)

四、TCP/IP模型-传输层 一、TCP 1、TCP定义 TCP(Transmission Control Protocol&#xff0c;传输控制协议)∶为应用程序提供可靠的面向连接的通信服务。目前&#xff0c;许多流行的应用程序都使用TCP。 连接&#xff1a;正式发送数据之前&#xff0c;提前建立好一种虚拟的&…

ES6-03-模版字符串、对象的简化写法

一、模版字符串 1-1、声明 反引号。 1-2、特性 1、字符串内容可以直接换行 得用号连接 2、变量拼接 现在&#xff1a; 二、对象的简化写法 ES6允许在大括号里面&#xff0c;直接写入变量和函数&#xff0c;作为对象的属性和方法。 let name milk;let chage function(){con…

脚本实现登陆滑块

脚本实现登陆滑块 仅供学习参考&#xff0c;简单操作 你知道吗&#xff0c;滑动验证码居然是为了验证人类比机器人蠢而设计的。 你以为自己快速、准确地滑动拼图、对齐图案&#xff0c;才被允许通过&#xff0c;系统还说你超越了99%的用户&#xff0c;夸你“比闪电还快”&am…

STM32_SPI

1、SPI简介 1.1 什么是SPI SPI&#xff0c;即Serial Peripheral Interface&#xff0c;串行外设接口。SPI是一种高速的、全双工、同步的串行通信总线&#xff1b;SPI采用主从方式工作&#xff0c;一般有一个主设备和一个或多个从设备&#xff1b;SPI需要至少4根线&#xff0c;…

FLINK-窗口算子

参考资料 官方文档- WindowFlink中的时间和窗口之窗口 窗口 在流处理中&#xff0c;我们往往需要面对的是连续不断、无休无止的无界流&#xff0c;不可能等到所有所有数据都到齐了才开始处理。所以聚合计算其实只能针对当前已有的数据——之后再有数据到来&#xff0c;就需要继…

chat4-Server端保存聊天消息到mysql

本文档描述了Server端接收到Client的消息并转发给所有客户端或私发给某个客户端 同时将聊天消息保存到mysql 服务端为当前客户端创建一个线程&#xff0c;此线程接收当前客户端的消息并转发给所有客户端或私发给某个客户端同时将聊天消息保存到mysql 本文档主要总结了将聊天…

JavaWeb_SpringBootWeb基础

先通过一个小练习简单了解以下SpringBootWeb。 小练习&#xff1a; 需求&#xff1a;使用SpringBoot开发一个Web应用&#xff0c;浏览器发起请求/hello后&#xff0c;给浏览器返回字符串"Hello World~"。 步骤&#xff1a; 1.创建SpringBoot项目&#xff0c;勾选We…

epoll模型下的简易版code

epoll模型下的简易版code c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/epoll.h> #include <fcntl.h>#define MAX_EVENTS 10 #define NUM_DESCRIPTORS 5 // 模拟多个文件描述符// …

工具类解决事务和过滤器解决事务

事务的四大特性ACID 原子性&#xff1a;强调事务的不可分割.多条语句要么都成功&#xff0c;要么都失败。 一致性&#xff1a;强调的是事务的执行的前后&#xff0c;数据要保持一致 隔离性&#xff1a;并发访问数据库时,一个事务的执行不应该受到其他事务的干扰. 持久性&#…