与您共读《Java 编程思想》 Page21~30
1.Java的内存如何分配
- 寄存器:最快的存储区,位于处理器内部
- 堆栈:随机访问存储器(RAM)。堆栈指针向下移动,分配新内存,反之释放内存。速度仅次于寄存器。Java必须知道堆栈内所有项的生命周期,以便移动指针,灵活性受限制。存储对象的引用、基本类型。
- 堆:内存池(RAM区),存放Java对象,编译器不需知道存储的数据在堆里存活的时间。执行new即可分配内存。用堆存储分配和清理比堆栈更费时,相对灵活性却高。
- 常量存储:存放在代码内部或ROM(只读存储器)
- 非RAM存储:流对象和持久化对象
2. Java基本类型的设计
Java将对象存放在堆里,当对象为特别小简单的变量往往不过高效,因而java采用C的设计创建一个并非引用的自动变量。直接存储值,并置于堆栈中,更加高效。
基本类型 boolean, char, byte, short, int, long float, double, void
对应包装类Boolean, Character, Byte, Short, Integer, Long, Float, Double, Void
(ps: Java包含八大数据类型,书中将void也归为基本数据类型)
Java确定每种基本类型所占存储空间的大小,不随硬件架构的变化而变化。这种存储空间大小的不变性是Java程序员比用其他大多数语言编写程序更具可移植性的原因。
- char 16bit
- byte 8bit
- short 16bit
- int 32bit
- long 64bit
- float 32bit
- double 64bit
Java提供高精度计算类BigInteger和BigDecimal
3.Java数组的安全性
C和C++数组即使内存块,一个程序访问内存块之外的数组,或数组初始化之前访问内存都是危险的。
Java目标之一是安全性,确保数组会被初始化,而且不能在它使用范围外访问。以每个数组上少量内存开销和运行时内存检查为代价换取安全性和效率的提高。
4. Java 方法
Java使用术语“方法”而不是“函数”。
返回类型、方法签名、参数列表、return关键字 退出方法、返回结果
5. import关键字
- 指示编译器导入一个包,也就是一个类库
- 通配符”*”
6. static关键字
- 为特定区域分配单一存储空间,而不去考虑创建多少对象(类数据、静态成员)
- 某个方法不与包含它的类在内任何对象关联在一起,即使没有对象也能调用方法(类方法、静态方法)
例如:main方法,程序的唯一入口,用static修饰