首页 新闻 赞助 找找看

JAVA中==号与equals的区别?

0
[已解决问题] 解决于 2013-07-05 08:34

class Student{
 private int age;
 public int getAge(){
  return age;
 }
 public void setAge(int age){
  this.age=age;
 }
 private String name;
 public String getName(){
  return name;
 }
 public void setName(String name){
  this.name=name;
 }
 Student(int age,String name){
  setAge(age);
  setName(name);
 }
 Student(){} 
}
public class Test{
 public static void main(String [] args){
  Student stu1=new Student(12,"张三");
  Student stu2=new Student(12,"张三");
  System.out.println(stu1.equals(stu2));
  System.out.println(stu1==stu2);
 }
}

< >
分享
最佳答案
0

equals需要重写,不重写则集成父类(Object)的equals,实际也是使用的==。

1.equals的重写需要重写hashCode方法。

2.==判断两个对象(非原型)内存地址是否相同。

 

奖励园豆:5
在大地画满窗子 | 初学一级 |园豆:102 | 2013-06-21 10:08
其他回答(2)
0

equals 是比较对象的 ==是用来比较值的!

1.equals 是当前引用的对象和传进来的对象是否相等。很明显stu1.和stu2是两个对象!两个不同引用地址的值不相等!

2.==是比较两个对象的内存地址是否相等,只有两个对象指向的内存地址相等的时候才会相等!你new的两个student两个内存地址肯定不相等!

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-06-21 09:25
0

Java中,这块和Net不太相同。==与equals针对引用类型时,都要比较地址。

幻天芒 | 园豆:37175 (高人七级) | 2013-06-21 12:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册