标签:
public class CreateObj { int id=0; Person person; //覆盖默认的构造器 public CreateObj(int id,Person p){ this.id=id; this.person=p; } public static void main(String[] agrs){ CreateObj obj1 =new CreateObj(2,new Person(10)); CreateObj obj2 =new CreateObj(2,new Person(10)); CreateObj obj3 =new CreateObj(2,obj1.person); //使用“==”比较两个对象的引用——地址值 是否相等: System.out.println(obj1==obj2); //比较两个实例对象时,无论用“equal”还是用“==”,比较的都是引用,即地址值 System.out.println(obj1.equals(obj2)); //比较两个实例对象中的基本数据类型的成员变量 System.out.println(obj1.id==obj2.id); //比较两个实例对象中的引用数据类型的成员变量 System.out.println(obj1.person==obj2.person); System.out.println(obj1.person==obj3.person); } } class Person{ int age =0; public Person(int age){ this.age =age; } }
比较结果:
false
false
true
false
true
总结:①每new一个对象,堆中便开辟一块内存用来存储该类实体的地址值,new几个,创建几个,所以地址值皆不同
②比较引用对象时,无论用equal还是==,比较的都是类实体的地址值
标签:
原文地址:http://www.cnblogs.com/sk-hy/p/5309457.html