java中如果两对象(obj1,obj2)相等,那么在修改obj2的时候,obj1的值也会改变。其实相当于内存中只有一个对象,而obj1和obj2连个变量都指向同一个对象。
如果两个变量引用的是两个不同地址的对象,即使对象的内部参数都是一样的,系统也会认为是不同的两个对象
至于比较方法,简单一点的可以使用==。严谨一些就用equals
看下这个网页链接
Equator equator = new GetterBaseEquator();
// 判断属性是否完全相等
boolean eq = equator.isEquals(user1, user2);
// 获取不同的属性
Listdiff = equator.getDiffFields(user1, user2);
没有现成的方法,可以考虑在对象里面重写equals方法
obj1.equals(obj2) 用对象obj1调用函数equals,参数就传对象obj2.
举个例子:
String s1= new String("ss");
String s2= new String("ss");
System.out.println(s1.equals(s2));
System.out.println(s1==s2);
结果:
true
false
"=="可用于基本数据类型和引用数据类型,当用于引用数据类型时,比较的实际上是两个数据的引用地址,如果引用地址相同那么equals结果也一定是true;而“equals”则是比较两数据本身,equals返回true“==”未必返回true。
对于两个自定义对象的比较:
1、重写toString方法,然后object1.toString().equals(object2.toString())
2、重写equals方法,然后object1.equal(object2)
3、还可以利用反射比较。