PDF 课件和源代码下载地址:
https://gitee.com/geektime-geekbang/LetsJava
作者回复: 好问题。这个问题是一个和编译优化相关的点,所以没有涉及。 如果A和B在不同的jar包中(可以认为是不同的项目),那么B中用到A中的静态、final、基本类型变量或String literal value,那么B就会在编译的时候直接用这个值,而不是引用A中的值。这样的问题就是,如果A中的值变了,重新编译了,B在被重新编译之前还是会使用A中原来的值。 简单来说,static final的值最好就是永远不变的。否则用到的地方可能都要重新编译
作者回复: 用一个相对接近的示例代码,出发点是为了减少大家热身的时间。一点点使用新的知识来给实例代码补充新的内容。使用新的demo的问题是,会让本身长度有限的课程用比较长的时间解释示例代码的意义。而且学下来会不连贯。 跳着看的同学,我建议先看一下要跳过的章节的最后的总结,看一下自己是否掌握了本节的内容。如果掌握了这部分内容。示例代码其实都比较简单,掌握了语法本身,代码其实问题不大。
作者回复: 可以。A类和B类里都可以定义一个叫做counter的静态变量。使用的时候,用类名+变量名来区分,比如A.counter和B.counter.
作者回复: import static 和 import可以认为是没有任何关系的,它俩解决的问题不一样。import static也会讲到的,慢慢来。
作者回复: 1)没有new 一个类这种操作 2)可以认为Java会在程序第一次访问static变量之前申请内存并初始化还
作者回复: 这样只会改当前对象的属性,不会对已经创建出来的别的对象或者将要创建出来的新的对象有影响。就好像你自己的手机换个壁纸,同型号的别人的手机不会受影响