PDF 课件和源代码下载地址:
https://gitee.com/geektime-geekbang/LetsJava
作者回复: 嗯呐,既适合从零学,又适合重新学。
作者回复: C++不仅可以这么理解,而且开放地址可以让你操作。Java是只限于这么理解,并不开放地址给你操作(虽然也可以,但是很不推荐)
作者回复: 对,一个对象随便有多少个引用指向它都没问题
作者回复: 对, 这里只是尽量模仿底层操作, 帮助从原理上理解这个操作是怎么完成的. 对于实际的使用, 并没有什么影响. 但是对于数组名与实的分离, 还是要理解的. 理解数组变量之间的赋值实际是发生了什么, 是对后面学习类和对象的一个重要的铺垫. 一次看不明白也是正常. 以后想不明白的时候再回来看一遍, 反正不多要钱 (-:
作者回复: 嗯呐,就是对应这个。只是Java封装的更严实一点。
作者回复: 只有带有main方法的类,才能被执行,才能有绿色的▶️
作者回复: 第一个问题,数组变量的地址是固定的,比如int[] arr,arr的地址就是不变的,就好像arr这个变量名一样,至于是不是随机的,计算机里没有随机,甚至随机数严格来说都是为随机数。arr这个变量对应的地址,是计算机按照规则分配的。对我们来说,它就是随机的,没有具体意义的。尤其是对于Java,Java是不允许直接操作内存的。抛出这个概念是为了帮助大家理解变量的工作模式。 第二个问题,arr里存储的地址,是数组实体首个元素的地址。视频里有腔调哦
作者回复: 有个叫unsafe的类可以做一些这种操作。
作者回复: 编译的时候确定好的,你可以认为每个名字(a)都是在编译的时候变成了一个地址
作者回复: 准确的说,应该是java都要通过两级跳的方式来访问,不过绝大部分高级语言也都是这么设计的。