equlas和==的区别 equlas和==的区别
1. ==
分为两种情况
1.当两个值为基本数据类型时,此时比较的是两个数字的值。(byte、short、int、long、flout、double、char、boolen)
2. equlas
它只要作用于Object类,比较是否为同一个对象。
1.如果没有对equlas方法进行重写,则比较的是两个值的对象地址。
2.例如String、Date、Integer等方法对euqals进行重写之后,比较的是两个对象指向的内容。
3.equals的源码
public boolean equals(Object obj) { //this - s1 //obj - s2 return (this == obj); }
方法默认是比较对象的内存地址,在一些类库中,方法被重写了,例如String、Date、Integer等。
所以说,对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是内存中的存放位置的地址值,跟双等号(==)的结果相同;如果被复写,按照复写的要求来。
4.String类的equals()的源码
public boolean equals(Object anObject) { if (this == anObject) { return 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; }
练习
题目:
答案:
结论: