java中关于引用 变量值的问题

Python011

java中关于引用 变量值的问题,第1张

hashcode并不是地址,hashcode输出同或不同对==操作符无影响。hashcode通常用来快速比较对象内容。有些对象是否相同由内容决定,但有些对象是否相同不由内容决定。

==相等操作符比较引用类型对象时,检查两个对象在运行时内存结构里是否是同一个对象。

同一个对象才返回真...

所有引用类型,如果没有初始化,那么它的值就是 null。比如:

String s

这时只是声明了成员变量 s 它的值是 null,可以在声明的时候对它进行初始化:

String s = new String("Hello")

首先生成对象的时候对象的内容被存储在内存中的,存储的位置会有段内存地址

而 当 A a = new A()的时候可以如下理解

new A() 在内存中保存该对象并返回存储位置的地址, A a = new A()执行的时候呢a的值

可以理解为a = 内存地址这样

那么在引用传递的时候比如 A b = a的时候,相当于 b = a的内存地址

所以无论对a还是b进行修改的话,实际上都是修改内存中由new A()生成的对象

而 a 和 b 其实都是对 new A()生成的对象的引用

对象的复制是指内存中实际存储两个对象,只不过第二个对象的所有之都与第一个对象相同,

相当于 A b = new A(),让后再把a 中的内容全部复制到b中,

这个时候修改 a 的时候 b的内容不会改变