关系操作符“==”
关系操作符生成的是一个boolean类型的结果,他们计算的是操作数的“值”之间的关系。
public class Main {
public static void main(String[] args) {
int m=5;
int n=5;
System.out.println(n==m);
String str1 = new String("hello");
String str2 = new String("hello");
String str3 = new String("hello");
System.out.println(str2==str3);
str2 = str1;
str3 = str1;
System.out.println(str2==str3);
}
}
该段代码的输出结果为true、false、true
为什么呢?
首先应该理解基本数据类型变量和引用数据类型变量的区别
Java中的八种基本数据类型
浮点型:float(4byte)、double(8byte)
整型:byte(1byte)、short(2byte)、int(4byte)、long(8byte)
字符型:char(1byte)
布尔型:boolean
对于这八种基本数据类型,变量直接存储的是值
对于引用类型,变量存储的是与其关联的对象在内存中的地址
equals()方法
equals()方法是基类Object的方法,因此,对于所有的继承于Object的类,都会有该方法。
在Object类中,equals()方法是用来比较两个对象的引用是否相等,即是否指向同一个对象。
public class Main {
public static void main(String[] args) {
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1.equals(str2));
}
}
该段代码的输出结果为true
String类对equals()方法进行了重写,用来比较指向的字符串对象的值是否相同。
其他的一些类诸如:Integer和Date类等都对equals()方法进行了重写。用来比较指向的对象的值是否相同。
总结
-
对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址。 -
对于equals方法,注意:equals方法不能作用于基本数据类型的变量;
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址。
本文深入探讨了Java中==操作符与equals方法的区别及应用。解析了它们在处理基本数据类型与引用类型时的不同行为,并通过实例代码展示了具体的工作原理。

被折叠的 条评论
为什么被折叠?



