看了你说的贴子了,其实那里说的很清楚了 我想可以这么理解,我们所操作的都是对象的引用。 例如 A a = new A(); 我们可以把a看作一个引用,他只是指向这个实际的A对象。 A b = new A(); b是另一个引用,如果第一个对象的地址为xxxx,第二个对象的地址肯定和第一个对象的地址不同,因为他们都是new出来的,每个都占用不同的内存区域。假如第二个对象的地址为yyyy. 这时候如果比较a==b,那么肯定是false,因为他们比较的是对象的地址,即xxxx != yyyy. 要比较对象是否相等,应该用equal方法,equal方法,比较的不是对象的地址,而是比较对象内部变量的值是否相等,而且有的类没有实现equal方法,那么你调用equal方法,其实调用的是Object类的equal方法。这样比较出来的结果也是不对的, 这里的问题挺多,建议你买本pratical java,或者effictive java,来看看 那上面说的挺明白。
我想可以这么理解,我们所操作的都是对象的引用。
例如 A a = new A();
我们可以把a看作一个引用,他只是指向这个实际的A对象。
A b = new A();
b是另一个引用,如果第一个对象的地址为xxxx,第二个对象的地址肯定和第一个对象的地址不同,因为他们都是new出来的,每个都占用不同的内存区域。假如第二个对象的地址为yyyy.
这时候如果比较a==b,那么肯定是false,因为他们比较的是对象的地址,即xxxx != yyyy.
要比较对象是否相等,应该用equal方法,equal方法,比较的不是对象的地址,而是比较对象内部变量的值是否相等,而且有的类没有实现equal方法,那么你调用equal方法,其实调用的是Object类的equal方法。这样比较出来的结果也是不对的,
这里的问题挺多,建议你买本pratical java,或者effictive java,来看看
那上面说的挺明白。