HeadFirst Java-Kathy Sierra-90


  1. 当某个对象被 java 虚拟机察觉不会被使用到,该对象就会被标记成可回收的。如果内存开始不足,垃圾收集器就会启动来清理垃圾、回收空间,让空间能够再次被利用。
  2. 任何变量只要加上 public、static 和 final,基本上都会变成全局变量取用的常数。
  3. 事实上没有对象变量这样的东西存在,只要引用到对象的变量,对象引用变量保存的是存取对象的方式。
  4. 数组是个对象,不管里面放的是不是 primitive 主数据类型。
  5. java 是通过值传递的,也就是通过拷贝传递,方法无法改变调用方所传入的参数。
  6. 在创建一个类之前我们需要写出下面三种东西:伪码、测试码、真实码。
  7. 标准版的扩展都以 javax 作为包名称的开头。
  8. import 和 C 的 include 并不相同,运用 import 只是帮你省下每个类前面的包名称而已。程序不会英文用来 import 而变大或变慢。
  9. 抽象类的产生源于有些类不应该被初始化,比如动物类应该是什么?
  10. 任何从 ArrayList<Object> 取出的东西都会被当作 Object 类型的引用而不管它原来是什么。而且编译器是根据引用类型来判断哪些方法可以调用,而不是根据 Object 实际的类型。
  11. 多重继承会产生 “致命方块 " 问题,即两个及以上的直接父类拥有相同的方法,子类不知道应该调用哪个方法。
  12. 接口解决致命方块的方法很简单:把全部方法设为抽象的,如此一来,子类就得实现这个此方法,因此 java 虚拟机在执行期间就不会搞不清楚要用哪一个继承版本。
  13. 在 java 中,程序员会在乎内存中的两个区域:对象的生存空间堆 (heap) 和方法调用及变量的生存空间 (stack)。
  14. 不管对象是否声明或创建,如果局部变量是个对该对象的引用,只有变量本身会放在栈上,对象本身只会存在于堆上。
  15. 实例变量声明在类中方法之外的地方,局部变量声明在方法或方法的参数上。
  16. 构造函数在执行的时候,第一件事是去执行它的父类的构造函数,这会连锁反应到 Object 这个类为止。因为如果我们没有调用 super (),编译器会帮我们加上 super () 的调用。
  17. 基本数据类型有默认值,而包装类则没有默认值。
  18. 编译器不会注意 RuntimeException 类型的异常,它所关心的是称为检查异常的异常。
  19. 内部类可以使用外部所有的方法和变量,就算是私有的也一样可以使用。
  20. 如果某实例变量不能或不应该被实例化的,因为有些变量要在执行期当场创建才有意义。这个时候需要把它标记为 transient (瞬时) 的,transient 的引用变量会以 null 返回,而不管存储当时它的值是什么。恢复时会被赋值为 null 的对象引用或基本数据类型的默认值。
  21. 一个不可序列化的父类,其子类可以是可序列化的。
  22. 解序列化时新的对象会被配置到堆上,但构造函数不会执行,不然会抹去对象的状态。
  23. 静态变量不会被序列化,因为所有对象都是共享同一份静态变量值。当对象还原时,静态变量会恢复成类中原本的样子,而不是存储时的样子。
  24. 将 FileWriter 链接到 BufferedWriter 可以提升效率,因为 BufferedWriter 可以暂存一堆数据,然后到满的时候再实际写入键盘,这样可以减少对磁盘的操作。
  25. File 对象代表文件的路径,而不是文件本身。
  26. 对象的状态并非只能用序列化来存储,也可以使用 transient 修饰存储。
  27. java 的好处就在于大部分的输入 / 输出工作并不在乎链接串流的上游实际是什么。也就是说可以使用 BufferedReader 而不管是来自串流来自文件或 socket。
  28. 调度器在不同的 java 虚拟机上有不同的做法,就算是同一个程序在同一台机器上运行也会有不同的遭遇。
  29. 对泛型来说,extends 这个关键词代表 "是一个…",且适用于类和接口。
  30. hashcode 是用来缩小寻找成本的,但最后还是要用 equals () 才能认定是否真的找到了相同的项目。如果两个对象有相同的 hashcode 值,它们不一定是相等的。但若两个对象相等,则 hashcode 值一定要相等。
  31. 数组的类型是运行时检查的,但集合的类型检查只会发生在编译期间。
  32. JAR 就是 JavaARchive,这种文件是个 pkzip 格式的文件,它能让你的一组类文件包装起来,所以交付时只需一个 JAR 文件。
  33. JWS (Java Web Start) 程序由两个部分组成:可执行的 JAR 文件和.jnlp 文件。.jhlp 文件是用来描述 JWS 应用程序的 XML 文件,它有 target 指定 JAR 的名称和位置,以及带有 main () 的类名称。

文章作者: xiqin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xiqin !
  目录