equals方法是Object类中的方法,但在String类中被重写了,所以它的用法又有些区别。
1.如果比较的变量时String类型的,他所比较的是两个变量的内容,若内容相同则返回值为true,若不同则为false。
2.若是其他类型的话,比较的事两个引用变量是否同为某个对象,若是则返回值为true,不是则为false。
注意:equals方法他只能比较引用类型的变量==:在基本数据类型中,他比较的是两个变量的内容是否相同;
在引用数据类型中,他比较的是两个变量的内存地址是否相同。
1.如果比较的变量时String类型的,他所比较的是两个变量的内容,若内容相同则返回值为true,若不同则为false。
2.若是其他类型的话,比较的事两个引用变量是否同为某个对象,若是则返回值为true,不是则为false。
注意:equals方法他只能比较引用类型的变量==:在基本数据类型中,他比较的是两个变量的内容是否相同;
在引用数据类型中,他比较的是两个变量的内存地址是否相同。
Integer b=100;
(a==b)==true;
Integer c=200;
Integer d=200;
(c==d)==false;
你这个也太片面了.任何一个类可以重写它的equals方法 来按照自己的意愿进行比较,我什么不比较直接返回true 也是可以的。
重写equals()的,就看你怎么写了判断规则了。
可以用以下步骤得到一个实现良好的equals方法
1.判断参数是是否为空
2.判断参数是否指向相同引用
3.判断参数是否通过instanceof测试
4.再比较各变量的值.(易变化部分先比较)
public Boolean equals(Object o){
if(null == o){
return false;
}
if(this == 0){
return ture;
}
if(o instanceof this.Class){
//强制转化为本类型
//比较各变量的值
}
}
比如String s1 = "test"; String s2 = "test"; 这两个变量s1和s2, 不管内容和地址都相同, 所以导致了它们完全相等, 使用==或equals都完全一致. 2. 其他类型的话, 比如新写的类, 如果需要进行比较, 一般都会重写equals方法的, 否则就直接比较是否为同一对象, 因为所有类都继承自Object, 而Object的equals方法是直接用的==.
具体还是要看是否方法被重写过。
被你发现了...我写错了..是 this == o;
想表达的意思是..当前引用与o这个引用指向同个对象...
==验证数值是否相等我大部分是这么用的。。
==对于基本类型,看其变量值是否相等,对于引用类型,看其是否为同一个对象
equals方法是Object类的方法,任何类都可以重写这个方法,对于String类来说,equals比较的是两个字符串对象的字符序列是否完全一致,所以对于==相比是true的话,equals相比必然是true,==相比是false的话,equals相比也有可能是true,如下面的例子
str1=new String("abc");
strl=new String("abc");str1==str2 结果:false 因为通过new 必然会产生新的对象,所以结果为false
str1.equals(str2) 结果:true下面的例子展示了String 的一个特点str1="abc";
str2="abc";str1==str2 结果:true 因为这回不是通过new 来产生的String,所以str1="abc",java会检查缓存中是否存在"abc",如果存在直接让str1引用"abc"对象,如果不存在会建一个“abc"对象放在缓存中,当执行str2="abc";时,java还是要检查缓存,和上面的步骤一样,所以就会产生str1==str2为true的结果
str1.equals(str2) 结果:true
public class Test{
String aa = "";
Test(String a){
aa = a;
}
public static void main(String args[]){
String t1 = "test";
String t2 = "test";
System.out.println(t1 == t2);
System.out.println(t1.equals(t2));
System.out.println("\n==============\n");
Test test1 = new Test("abc");
Test test2 = new Test("abc");
System.out.println(test1.aa == test2.aa);
System.out.println(test1.aa.equals(test2.aa));
System.out.println("\n==============\n");
System.out.println(test1 == test2);
System.out.println(test1.equals(test2));
}
}