1.引用
注意:String s;
这句只是创建了引用,并没用关联上对象,如果此时向s发送消息,会报错。
比如
String s;
......
if(null == s) //当程序执行到这句话时,会报错
....
因此,建议:创建引用时,可以先将其赋值为null;
2.引用,常量,对象,基本类型 ,持久化对象 存放在什么地方
引用:存放在堆栈中,其存放关联对象地址的映射。
优点:快速分配存储 。
缺点:java系统必须知道存储在堆栈中所有项的生命周期,来控制内存的的释放与否。
对象:存放在堆中。通过new即可创建对象。
优点:相对堆栈的好处是,编译器不需要知道存储的数据在堆存活多久。
缺点:相对堆栈,存储分配和清理需要更多的时间
常量:存储在程序代码内部。
优点:不会轻易被改变。
基本类型:存放在堆栈中,其直接存储“值”。
优点:相对于将其存放在堆中,由于其本身占内存小所以不是很适合,加上存在堆栈中,更加的高效(比如存和取)
注:基本类型对应的包装类,可以使其在堆中创建一个非基本对象,用来表示对应的基本对象。
如
char c = 'x'
Character ch = new Character(c);
也可以 Character ch = ‘x’;(自动装箱)
持久化对象:由于数据可以完全独立于程序,可以在程序没有运行时也可以存在。如 流对象,持久化对象。
所以可以存放在磁盘中,数据库