1.JAVA操纵的标识符实际上是对象的一个“引用”;如String s;里的s是String类的引用并非对象。
2.程序运行时,有五个不同的地区可以存储数据。
(1)寄存器:最快的存储区,数量有限,按需分配,你不能直接控制
(2)堆栈:java对象引用存在这,对象并不在这;基本类型
(3)堆:用于存放所有的java对象,在这里进行存储分配和清理可能比在堆栈进行 需要更多时间
(4)常量值通常直接放在程序代码内部。但java里常量字符串放在字符串池(在方法区)
(5)持久化,程序之外的地方
3.基本类型位于堆栈
4.java每种基本类型所占存储空间大小(不随平台而改变),8bit是一个字节
基本类型 | 大小 |
---|---|
char | 16bit(2个字节) |
byte | 8bit(1个字节) |
short | 16bit(2个字节) |
int | 32bit(4个字节) |
long | 64bit(8个字节) |
float | 32bit(4个字节) |
double | 64bit(8个字节) |
boolean | - |
void | - |
boolean大小没明确指定,仅定义为能取字面值true或false
5.java会确保数组初始化(源码里..以少量内存开销及运行时的下标检查为代价换来安全和效率的提升)
6.java神奇之处,有个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再引用的对象,随后释放这些内存空间。
7.类的基本数据成员会默认初始化
基本类型 | 默认值 |
---|---|
boolean | false |
char | ‘\u0000’(null) |
byte | (byte)0 |
short | (short)0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
9.java.lang这个包是默认导入所有java文件的