一、String str="abc",一定有创建引用,但不一定有在堆中创建新的对象。
String str=new String("abc"),一定会在堆中创建新的对象。
两者比较发现,前者的在一定程度上提高程序的运行速度,后者会占用虚拟内存,从而加重程序的负担。
二、equals与==的应用。
当比较包装类里面的数值是否相等时,用equals()方法;当测试两个包装类的引用是否指向同一对象时,用==。
三、提交String变量的效率
当String变量需要经常变换其值时,应该考虑使用StringBuffer类。以提高程序效率。
四、堆与栈的比较
堆主要用来存放对象,栈主要是用来执行程序。
程序模块数据区的分配是在程序运行时进行,但是分配的大小与多少是在编译时确定的。
堆是应用程序在运行时请求操作系统分配给自己内存,由于从操作系统管理的内存分配,所以在分配和销毁时都要占用时间,因此用堆的效率非常低。
五、如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。