Java核心技术笔记一

Java核心技术笔记一

1. Java和C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。

2. Java没有C++的多重继承,取而代之的是更简单的接口概念。

3. 从一开始Java就设计能防范各种攻击,包括:运行时堆栈溢出、破坏自己的进程空间之外的内存、未经授权的读写文件。

4. javac程序是Java编译器,将java文件编译成class文件。java程序启动Java虚拟机,执行class文件中的字节码。

5. Java区分大小写。

6. 8中基本数据类型,4种整型、2种浮点型、1种布尔型、1种字符型。浮点数值采用二进制表示,而二进制无法准确表示十分之一,就像十进制无法准确表示三分之一一样。如需准确表示,请用BigDecimal。
  遗留问题:char和bool以及unicode各占用多少字节?

7. 有些处理器使用80位浮点寄存器,这样在计算时会和64位计算机上结果不一样。可以将类标记为 strictfp,这将使类强制使用严格浮点计算,确保所有计算结果一致。

8. 数值类型之间的强制类型转换丢失的是高位。例如 (byte)300 = 44。300的二进制位 100101100。后8位为44。

9. 关于字符串的实现,后续单开一篇。

10. Java中的多维数组,其实是数组的数组实现。

11. 传统结构化程序在解决问题是,首先是设计一系列过程(即算法)来求解问题,然后再考虑数据存储的方式。即先确定如何操作数据,再确定如何存储数据,以便于操作。故 算法 + 数据结构 = 程序。
而面向对象则反过来,先确定数据的存储,再确定算法。

12. Java对象都是在堆中构造的。

13. Java方法的参数总是按值传递。当参数是对象时,值为对象的地址。

14. 完整的描述一个方法,需要指出方法名和方法参数,这叫方法的签名。方法签名不包括返回值,因为有时候调用一个方法,可能只关心它的内在逻辑,并不关心其返回值。

15. 类的设计原则

  • 一定要保证数据私有:绝对不要破坏封装性,数据表现形式很可能会变化,但数据的使用方式却不会经常发生变化。
  • 一定要对数据初始化:最好不要依赖系统的默认值,而是显示的初始化所有数据。
  • 不要在类中使用过多的基本类型:部分属性之间有强关联关系时,应该抽出独立为一个新对象。例如 省市县镇村 等字段,应独立为Address对象。
  • 不是所有的属性都需要设置set、get方法,有时只需其中之一。
  • 类的职责要单一。
  • 类名、方法名和参数名 要能体现他们的职责,避免用单个字母代替。