“equals”比较的是对象的内容,“==”比较的是对象的地址。
首先通过代码来说明“==”比较的是什么?代码如下:- class CompareDemo
- {
- public static void main(String[] args)
- {
- String str1 = "hello"; //通过直接赋值的方式实例化对象。
- String str2 = new String("hello"); //通过new关键字实例化对象。
- String str3 = str2;
- System.out.println("str1==str2--->"+(str1==str2));
- System.out.println("str1==str3--->"+(str1==str2));
- System.out.println("str2==str3--->"+(str2==str3));
- }
- }
复制代码 输出的结果是:
str1==str2--->false
str1==str3--->false
str2==str3--->true
通过上面的输出结果可以得出“==”比较的是内存的引用地址,因为str1和str2的内存地址不一样,所以结果是false,而str2和str3指向的是同一内存地址,所以结果为true。
再通过代码来说明“equals”比较的是什么?代码如下:- class CompareDemo
- {
- public static void main(String[] args)
- {
- String str1 = "hello"; //通过直接赋值的方式实例化对象。
- String str2 = new String("hello"); //通过new关键字实例化对象。
- String str3 = str2;
- System.out.println("str1==str2--->"+str1.equals(str2));
- System.out.println("str1==str3--->"+str1.equals(str2));
- System.out.println("str2==str3--->"+str2.equals(str3));
- }
- }
复制代码 输出的结果是:
str1==str2--->true
str1==str3--->true
str2==str3--->true
通过上面的输出结果可以得出“equals”比较的是对象的内容,因为内容都是hello,即使引用的内存地址不一样,但最终的结果都是true。 |