• 好_快
    2019-06-07
    老师,只要值可以修改都叫变量吧,变量应该是和常量概念相对应吧。

    作者回复: 这个可能需要从不同的角度去理解。

    变量的英语叫做variable,variable的词根vary就是变化,使得=多样化的意思。

    到了计算机这边,variable(变量)就泛指一个有名字的值了。至于能不能变化,倒是其次的。与其对应的,更多的可能是literal value(字面值)。literal value只有值,没有名字,是一种更绝对的“常量”。

    至于常量,可以认为是变量中特殊的一种,也就是值不可变化。这个就有点矛盾,本身叫变量,而又不能变化。其实Java中的常量,声明的语法如下:

    final int variableInt = 9;

    也就是说,常量是使用final修饰的变量。

    这些都是比较偏虚的,类似考试一样的问题。其实在实际编程使用中,只要说变量,常量,字面值就可以。理解每种概念的含义,不用纠结谁是谁的对应面。

    
     3
  • 飞鱼
    2019-10-12
    老师,请问上面说“方法里面创建的对象不会随方法的结束而清除”,比如下面这个方法中
    {
         Book b = new Book();
    }
    当方法结束后,b就消失了,那就没有引用指向这个对象,为什么这个对象不会跟着清除呀?

    作者回复:
    我要表达的意思是,创建对象的方法结束了,并不是这个方法里创建的对象被消除的充分条件。当然也不是必要条件。也就是说创建某个对象的方法执行是否结束,和这个对象是否会被清除,一点关系都没有。

    先说不是必要条件,以你的代码为例,如果是指向这个对象唯一的引用,那么在后面加上一行b=null,这个对象也就没有引用指向它了。在方法执行完之前,这个对象就可以被清除掉。

    再说不是充分条件。b并不一定是指向这个对象的唯一引用。在Book的构造方法里,完全可以把自己的引用放在别的对象的成员变量里,或者加到一个静态的list里。所以方法结束之后完全可以有别的引用指向这个对象。

    所以,没有引用指向一个对象,那么这个对象铁定可以被清除。这个创建这个对象的方法是否执行完毕没有任何关系。

     1
     2
  • 就是故意丶
    2019-09-27
    其实是个两三年的程序员了。。总被吐槽基础不扎实,老老实实一下一下的看过来的,发现作者讲的很生动形象,很明白,为啥只有不到两千的销量呢。。。。。。

    作者回复:
    扎心了老铁!

    为了大家夯实基础,票圈分享起来,两千达成就靠你了~

     1
     1
  • 冰箱里的猫
    2020-02-04
    看完这一节,对引用二级跳的概念更深刻了,就是英文不好,各种方法看起来有点吃力T T

    作者回复: 英语是个功夫活儿,多用多学就习惯了。

    
    
  • 消融
    2019-07-16
    老师gift 不是Merchadise类的对象吗,为什么可以像属性m.gift样用

    作者回复: gift 是 Merchadise类的对象引用。A类里可以有A类型的引用,这个是要好好理解一下。如果开始不好理解,你可以把引用当成是 Reference 类型,就像是基本数据类型那样,不要想它是什么类的引用。

     1
    
我们在线,来聊聊吧