【15】一切都是对象
1,用句柄操作对象,句柄是对象的标识,对象是真实存储数据的结构化的内存。
2,所有对象都必须创建后才能使用。
3,对象保存的位置:
a,寄存器,由编译器控制,程序员无法知晓。
b,栈,比如对象的句柄就放置其中,但切记对象本身并不会放到栈里,因为所有的对象都必须“创建”。
c,堆,对象的存储位置。
d,静态区,切记对象本身并不会放置其中,存储其中的还是句柄。
(如此一来,被static修饰的对象,其句柄是存储于静态存储区的,未被修饰的,多数放置于栈中,但对象本身,由于其必须“创建”性,皆位于堆里)
e,常数存储,比如代码中的常数值,它们跟代码一样,视为不会被改变,位于常数存储区里。
f,非RAM存储,比如文件,存储于硬盘中。
4,数组,实际创建的是对象句柄的数组,到这里基本可以理解别人为什么说JAVA里全是引用(句柄)了,且JAVA会对数组的边界进行检查。
5,绝对不要尝试清除对象,DELETE只存在于C++中,JAVA有自己的一套内存自动回收机制。
6,作用域,跟C++类似,区别在于JAVA不允许当前作用域里的变量名称与该作用域的子作用域里有同名的变量。
7,作用域结束时,句柄会随之消失,但句柄背后的真实对象,并未立即消失,它会等待被回收。
8,类的字段(成员变量)会被赋予默认初值,但局部变量不会。
9,对于类的静态字段,通过类名及对象名都可以访问,且其唯一存在。
10,所有JAVA文件会被默认导入java.lang.*,当需要其它类时,需要由程序员自行使用import关键字导入。