• 刘玲玲
    2019-05-23
    老师,讲得很好诶。更新能不能再快一些。期待后面的课程。

    作者回复: 后续内容制作按计划稳步推进中。学完第一篇可以自己试着写一些小程序。比如双人五子棋对战。

    我会提供一个代码实现,上传到GitHub供大家参考。



    P.S. 觉得不错的话,东西欢迎分享 (-:

    
     5
  • Novichok
    2019-07-25
    索引,按照偏移量来理解,确实比较好明白了。

    作者回复: 嗯呐,下次再有人问为什么你们程序员总喜欢从 0 开始计数,就反问:你知道什么是数组吗?

    
     2
  • 小伙伴
    2019-11-20
    看到老师拿着本子翻页的手一直在抖。瞬间感动了!😭😭😭😭

    作者回复:
    其实应该是我在点点点,但是本子太小了看着就像是在抖抖抖囧rz.....

    
     1
  • Geek_421d56
    2019-10-23
    这一节挺绕的,大致说说自己的理解。
    int a = 1;
    int[] book = new int[10];
    1. 数组变量名book和基本类型变量名a本质上是一样的,编译后本身是地址(栈地址),存储的是数据,只不过book存储的数据是地址(堆地址),这个地址标识了另一块内存区域(堆内存)。
    2. 那么book[0]和book[1]其实也是地址,与a或book不同的是,后者是编译时确定的绝对地址,而前者构建的是与book的相对关系,与编译无关,即book[0]与book地址相同,book[1]为book地址偏移1个int。这也解释了为什么数组第一个元素下标为0。
    展开

    作者回复:
    是我讲的太好,还是你太优秀,关于引用的关系竟然理解的丝毫不差。

    稍微有些不准确的是“后者是编译时确定的绝对地址”。这栈内地址也不是编译时确定的。每次调用方法都会给方法分配一段内存作为存储方法中局部变量所用。所以每个变量在这个基础上,也是一个偏移量,这个偏移量对每个变量来说说固定的。比如说a,可能就是8,每次都是栈地址+8是其真正的地址。

    其实Java编译完之后,没有什么东西是有绝对内存地址的,中间还隔了一个Java虚拟机呢。即使是本地程序(比如Windows上编译成exe的程序),也不是绝对地址。如果我学的操作系统和汇编语言还没完全扔掉的话,好像只有内核有绝对地址?真实的内存地址有时候要经过好几次相对地址的变化,我记得当时一个基址变址寻址了解一下?

    
     1
  • 乘坐Tornado的线程魔...
    2019-07-23
    为辛勤的老师打call。貌似MATLAB的数组是从1开始的,但是的确MATLAB高度封装,也可以不把它当做编程语言。

    作者回复: 是的,它是一个独立的领域

    
     1
  • welson🐴
    2019-07-02
    拿出本子的时候感觉 太有意思了,老师费心了

    作者回复: 大家能看懂, 我斥巨资买道具也值得 (-:

    
     1
  • Geek_a7fd0f
    2020-02-06
    老师你好,我有一个疑问是这样的:如果在有一行代码是int a=10;程序在执行到这行代码时应该要先给a变量分配一个内存地址,再给这个内存地址赋值,这样是不是说明这个变量名和这个内存地址是不是有个映射关系?这样后面在代码中使用到a变量时才能通过这个映射关系拿到这个地址?如果存在这样一个映射关系的话,这个映射关系保存在哪里呢?程序如果需要查找这个映射关系的话又如何去得到保存这个映射关系内容的地址呢?多谢老师。

    作者回复: 写了一篇文章回答你所有问题

    https://github.com/deepnighttwo/LetsJava/blob/master/FAQ/02%E7%AB%A0-Java%20%E4%B8%AD%E7%9A%84%E5%86%85%E5%AD%98%E6%98%AF%E6%80%8E%E4%B9%88%E5%88%86%E9%85%8D%E7%9A%84%20.md

    
    
  • xiasharp
    2020-01-29
    int a=10,在栈中声明一个变量名为a的引用;
    在栈中查找是否有字面值为10的地址,如果没有就开辟一个存放字面值是10的地址;将变量名为a的引用指向字面值为10的地址;

    作者回复: 不是这么玩的。你可以在后面讲字节码和反编译那一节看看反编译class文件里对应的字节码

    
    
  • study~
    2019-08-14
    老师 询问一下
    int [] book = new int[10]
    表示book指向一个长度为10的int型数组 数组下标应该是[0,10) ? 不包括10,左闭右开么?

    作者回复: 完全正确。

     1
    
  • 小先生
    2019-06-06
    老师,可以讲讲那个map类型吗。

    作者回复: Map会在后面讲. 现在讲还差了引用等一大串知识点.

    
    
我们在线,来聊聊吧