1.当使用‘==’的时候,只有当两个引用变量指向同一个对象时,‘==’才会返回true;
2.当使用equals方法的时候,只需要满足两个变量所指向的内容相同即可;
3.代码展示如下:
package com.object.test; public class ObjectEqualsTest { public static void main(String[] args) { //对于基本数据变量而言,i1和i2指向的都是Integer对象包装类; int i1 = 65; int i2 = 65; System.out.println("输出i1和i2是否相等"+(i1==i2)); //针对于字符串进行比较 //使用==判断两个字符串是否相等 String str1 = "测试代码"; String str2 = new String("测试代码"); System.out.println("当时用==判断是输出的结果"+(str1==str2));//输出结果为false,因为他们指向的是两个对象; System.out.println("~~~~~~~~~~"); System.out.println(str1.equals(str2));//输出结果为true,只需判断内容相同即可; } }4.JVM常量池保证相同的字符串直接量只有一个,不会产生多个副本。
5.使用new关键字创建字符串对象的时候,他被保存在运行时内存区,只有当正真使用的时候米慧聪堆内存中寻找对应数据;
6.equals方法的原则:
(1)自反性;对任意的equals方法重写都将返回true;
(2)对称性;X<--->Y的关系;
(3)一致性;等价比较的信息没有发生改变;
(4)对任何不是null的值,将一定返回false;