前情提要:
历史总是惊人的相似,只有经过混沌我们才能开出一片新的天地。成长,大概也是这样吧!
作者主页: 追光者♂
个人简介:
[1] 计算机专业硕士研究生
[2] 2022年度博客之星人工智能领域TOP4
[3] 阿里云社区特邀专家博主
[4] CSDN-人工智能领域优质创作者
[5] 预期2023年10月份 · 准CSDN博客专家
- 无限进步,一起追光!!!
感谢大家 点赞 收藏⭐ 留言!!!
本篇初步介绍Java中的比较运算符,如相似性比较中的==、!=符号,关系比较中的<、>、<=、>=符号,引用比较的instanceof等,此外用具体示例说明==和=的区别。
比较运算符,也称为关系运算符。
比较运算符的结果都是boolean
型,也就是要么是true
,要么是false
。
> < >= <= :只适用于基本数据类型(除boolean类型之外)
== != :适用于 基本数据类型和引用数据类型
比较运算符“==
”不能误写成“=
”
我们可用下图来对比较运算符做一个简要的概述:
在Java中,比较运算符用于比较两个值的大小或相等性,并返回一个布尔值(true
或 false
)。以下是Java中常用的比较运算符:
相等性比较:
==
:检查两个操作数是否相等。!=
:检查两个操作数是否不相等。关系比较:
<
:检查左操作数是否小于右操作数。>
:检查左操作数是否大于右操作数。<=
:检查左操作数是否小于或等于右操作数。>=
:检查左操作数是否大于或等于右操作数。引用比较:
instanceof
:检查一个对象是否属于某个指定类型或其子类型。需要注意的是,比较运算符通常用于基本数据类型的比较,例如整数(int
、long
等)、浮点数(float
、double
等)以及字符(char
)等。
而对于引用类型(类、接口、数组等),比较运算符通常比较的是对象的引用是否相等,而非对象的内容。如果需要比较对象的内容,可以使用对象的方法(如 equals()
方法)进行自定义的比较。
以下是一些示例用法:
int a = 2;
int b = 3;
boolean isEqual = (a == b); // false
String str1 = "Hello";
String str2 = "Hello";
boolean isSameString = (str1 == str2); // true
Object obj1 = new Object();
Object obj2 = new Object();
boolean isSameObject = (obj1 == obj2); // false
if (a < b) {
// 执行此代码块
} else if (a > b) {
// 不执行此代码块
} else {
// 不执行此代码块
}
在上面的示例中,我们使用了不同的比较运算符对变量进行比较,并根据比较结果执行相应的逻辑。例如,(a == b)
的结果为 false
,所以 isEqual
的值为 false
。另外,(str1 == str2)
的结果为 true
,因为 str1
和 str2
引用的是相同的字符串对象。
比较运算符在控制流语句(如 if
和 while
)以及排序算法等场景中非常常见,它们能够帮助我们进行条件判断和排序操作。
/*
测试运算符的使用3:比较运算符
1. == != > < >= <= instanceof
2. 说明
① instanceof 在面向对象的多态性的位置(详细)讲解。
② == != > < >= <= 适用于基本数据类型。(细节:> < >= <=不适用于boolean类型)
运算的结果为boolean类型。
③ 了解: == != 可以适用于引用数据类型
④ 区分:== 与 =
*/
class CompareTest {
public static void main(String[] args) {
int i1 = 10;
int i2 = 20;
System.out.println(i1 == i2);//false
System.out.println(i1 != i2);//true
System.out.println(i1 >= i2);//false
int m = 10;
int n = 20;
System.out.println(m == n);//false
System.out.println(m = n);//20
boolean b1 = false;
boolean b2 = true;
System.out.println(b1 == b2);//false
System.out.println(b1 = b2);//true
}
}
输出结果:
boolean b1 = false;
if(b1 == true) //if(b1 = true)
System.out.println("结果为真");
else
System.out.println("结果为假");
我们分析一下执行过程:
定义一个布尔型变量 b1
,并赋值为 false
。
执行条件语句 if(b1 == true)
。在条件判断中,比较 b1
的值与 true
的值是否相等。
b1
的值为 false
,而不是 true
,所以判断条件为假。进入 else
分支。执行 System.out.println("结果为假");
将字符串 “结果为假” 输出到控制台。
反之,若对if中的条件稍加修改:将 b1 == true 修改为 b1 = true
boolean b1 = false;
if(b1 = true)
System.out.println("结果为真");
else
System.out.println("结果为假");
我们也分析一下上述代码的执行过程:
定义一个布尔型变量 b1
,并赋值为 false
。
执行条件语句 if(b1 = true)
。在条件判断中,使用了赋值操作符 =
。
赋值操作符 =
用于给变量赋值。在此处,将 b1
的值更新为 true
。
赋值表达式的结果是被赋的值,所以 (b1 = true)
的表达式结果为 true
。
执行 System.out.println("结果为真");
将字符串 “结果为真” 输出到控制台。
也就是说,代码执行后的输出结果为 “结果为真”。
因为条件表达式 b1 = true
的结果为 true
,所以执行了 if
分支中的代码。需要注意的是,这里的 if
条件中使用的是赋值操作符 =
而不是相等操作符 ==
,所以实际上将 b1
的值更新为了 true
。
在Java中,instanceof
是一个用于检查对象是否属于某个指定类型或其子类型的比较运算符。它的语法格式为:
object instanceof type
其中,object
是要检查类型的对象,而 type
是要比较的类型。
instanceof
运算符的返回结果是一个布尔值,如果 object
是 type
或 type
的子类的实例,则返回 true
,否则返回 false
。
下面是一些示例用法:
class Vehicle {}
class Car extends Vehicle {}
class Motorcycle extends Vehicle {}
public class Main {
public static void main(String[] args) {
Vehicle vehicle = new Car();
System.out.println(vehicle instanceof Vehicle); // true
System.out.println(vehicle instanceof Car); // true
System.out.println(vehicle instanceof Motorcycle); // false
Vehicle otherVehicle = new Motorcycle();
System.out.println(otherVehicle instanceof Vehicle); // true
System.out.println(otherVehicle instanceof Car); // false
System.out.println(otherVehicle instanceof Motorcycle); // true
Vehicle differentVehicle = new Vehicle();
System.out.println(differentVehicle instanceof Vehicle); // true
System.out.println(differentVehicle instanceof Car); // false
System.out.println(differentVehicle instanceof Motorcycle); // false
}
}
在上面的代码中,我们定义了一个 Vehicle
类及其子类 Car
和 Motorcycle
。通过使用 instanceof
运算符,我们可以检查不同的对象与类型之间的关系。例如,vehicle instanceof Vehicle
返回 true
,因为 vehicle
是 Vehicle
类的实例;而 vehicle instanceof Motorcycle
返回 false
,因为 vehicle
不是 Motorcycle
类的实例。
instanceof
运算符常用于面向对象编程中的类型检查和类型转换。它可以帮助我们在运行时判断对象的实际类型,从而进行相应的操作或逻辑判断。
热门专栏推荐:
持续创作优质好文ing…✍✍✍
记得一键三连哦!!!
求关注!求点赞!求个收藏啦!