String内存布局:
说明:
(1)String str,char[] ch作为形参,一个是值传递,一个是引用传递;
(2)String有一个属性是final char[] value,就是内容实际存放的地方,地址不能被修改。重新赋值时,不能修改原String对象的值,只能指向新的对象;
(3)final char[] ch的地址也不能被修改,但是数组可以通过下标(实际是地址)修改对象的值。
(4)Java对象之前的赋值都是值传递。
此处引申几个问题供讨论:
1.equals和==有什么区别?
2.hashcode相等,那么==一定相等吗?equals一定相等吗?
3.两个对象用equals比较后相等,那它们的hashocde相等吗?