在讲 == 和 equals 的区别前我们需要确认一下 Java 中的数据类型。在 Java 中有基本数
据类型和引用数据类型两种。
1、8 种基本数据类型:
四种整数类型(byte、short、int、long)
两种浮点数类型(oat、double)
一种字符类型(char)
一种布尔类型(boolean)
2、引用数据类型:
除了上面我们说的 8 种基本数据类型外,其他在 Java 中出现的类型都是引用数据类型。
如我们自己写了一个 Dog 类,而在上面说的 8 种基本数据类型中不包括 Dog 类型,所以
Dog 类型是隶属于引用数据类型的。
==的理解:
要理解 == 我们学要从两个方面来理解:
(1) == 两边为 8 种基本数据类型时:
当 == 两边为 8 种基本数据类型时, == 判断的是两边变量中存放的内容是否相等。
例:
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 10;
if (a == b) {
System.out.println("变量 a 和变量 b 中的值相等");
}
}
}
上面的例子的运行结果是在控制台中输出"变量 a 和变量 b 中的值相等" 我们可以看出当
== 两边为 8 种基本数据类型时比较的时内容换句话说就是比较变量的值。
(2) == 两边为引用数据类型时:
当 == 两边为引用数据类型时,== 判断的是引用数据类型的对象的内存地址是否一
样,如果 == 比较的内存地址一样表示 == 两边是同一个对象,否则 == 两边不是同一
个对象。例:
public class Test {
public static void main(String[] args) {
//在 8 中数据类型中没有 String 类型所以 String 是属于引用数据类型的
String str1 = new String("abc");
//在这里在创建一个 str2 对象让他的值和 str1 一样
String str2 = new String("abc");