黑马程序员技术交流社区

标题: ==和equals [打印本页]

作者: 林海东    时间: 2015-7-30 23:20
标题: ==和equals
1、关于==做比较的问题

基本类型的比较:比较的是具体的值
引用类型的比较:比较的是对象的地址值
------------------------------------------------------------------------------------------------------------------
2、实现对象的成员变量数据的比较

compare方法的三步改进代码
A  :
public boolean compare(int age1,int age2)
{
     return age1 == age2;
}
//在main方法中的调用方式
boolean b1 = s1.compare( s1.getAge() , s2.getAge() );
B:
public boolean compare ( Student s1, Student s2)
{
     return s1.age == s2.age;
}
//在main函数中的调用方式
boolean bl = s1.compare( s1 , s2 );
C:
public boolean compare ( Student s)
{
     return this.age == s.age;
}
//在main函数中的调用方式
boolean bl = s1.compare( s2 );
------------------------------------------------------------------------------------------------------------------
3、Object类的equals方法_理解

在比较两个对象时为什么要重写 equals 方法?
因为该方法底层默认比较的还是地址值,而同一个类中的不同对象,地址值肯定不同
所以Object类中的equals 方法没有意义,所以我们需要重写它,比较的是对象当中的属性.
Student s=(Student)obj;
重写equals一般就是为了比较某个类的多个对象的所有成员变量值是否相同;
如果成员变量是基本类型,就用==比较;
如果成员变量是引用类型,就用该变量对应的引用类型的equals()方法;
return this.age==s.age&&this.name.equals(s.name);
------------------------------------------------------------------------------------------------------------------
4、String类的equals()方法详细解析
理解:其实字符串在底层是一个字符数组的形式存在的
String类的equals的方法的思路:
1、判断对象是否属于String类;
2、判断字符数组的长度是否相同;
3、比较字符串中的值是否对应相同;

作者: Lblnc    时间: 2015-7-30 23:41
好详细的说
作者: 明月刀割芳草    时间: 2015-7-30 23:53
学习了,谢谢
作者: kkkkkccccc    时间: 2015-7-30 23:55
学习了,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2