域名备案期间怎么做网站域名备案查询官网
在Java中 ' == ' 可以对基本类型进行比较,比较的是值是否相等
也可以对引用类型(对象)进行比较,比较的是引用变量所指向的空间地址
public static void main(String[] args) {int a = 10;int b = 10;System.out.println(a==b);//true// 基本类型比较,比较值是否相等String s1 = new String("aaa");String s2 = new String("aaa");System.out.println(s1==s2);//false//引用类型,这里比较的是两个String对象的地址是否相同}
那我们想要比较对象中所包含的内容是否相等,我们应该怎么做呢?
这时候就要引出我们的另一个主角----equals()方法:
源码:
public boolean equals(Object anObject) {if (this == anObject) {//判断这两个东西是否值(基本类型)/对象地址(引用类型)相等return true; //如果是,直接返回true}if (anObject instanceof String) {//判断该对象是否为字符串类型String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {//判断两个对象长度是否相等char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {//逐个比较每个字符是否相等if (v1[i] != v2[i])return false;i++;}return true;}}return false;}
这个方法一般用于比较两个字符串的内容是否相等
这个时候可能有的人会说了:
可是这个也不是对象的内容是否相等啊,你这比较的是String类型啊
到底怎么才能比较对象内容呢???
这时候我们就需要对该对象进行重写:::
public class People {private int age;private String name;private String add;@Overridepublic boolean equals (Object o) {if (this == o) return true;//判断两对象地址是否相等,如果相等直接返回trueif (o == null || getClass() != o.getClass()) return false;//判断两个对象的类对象是否相等,不相等直接返回falsePeople people = (People) o;return age == people.age &&//逐个比对该对象中的每一个值Objects.equals(name, people.name) &&Objects.equals(add, people.add);}
}
到了这里我们也看出来了(人话):
== 比较基本类型时,直接比较其中的值
比较引用类型时,比较的是对象在内存中的地址是否相等
equals 比较时,比较的是两个String类型的值是否相等
如果要比较两个对象中的内容是否相等,那么我们就需要重写equals()方法
(再人话:) == 比较基本类型,equals比较对象