rue
结果为true,说明str1和str2指向同一个对象
String str1 =new String ("abc");
String str2 =new String ("abc");
System.out.println(str1==str2); // false
用new则在堆中创建了2个对象
2.4应该注意的问题:
1.尽量使用基本数据类型代替对象
String str = "hello";
上面这种方式会创建一个"hello"字符串,而且JVM的字符缓存池还会缓存这个字符串。
String str = new String("hello");
此时程序除创建字符串外,str所引用的String对象底层还包含一个char[]数组,这个char[]数组依次存放了h,e,l,l,o
2.尽量减少对变量的重复计算
[java] v
for(int i=0;i
for(int i=0;i
[java] view plaincopyprint
for(int i=0,len=list.size();i
for(int i=0,len=list.size();i
3.避免在循环体中声明创建对象
[java]
for (int i = 0; i < 10000; ++i) {
Object obj = new Object();
}
for (int i = 0; i < 10000; ++i) {
Object obj = new Object();
}虽然性能上差别不大,但这样的代码会浪费栈内存空间,上边提到过引用变量会存放在栈内存,这样会在内存中产生大量的对象引用。
应该写成下边的:
[java]
Object obj;
for (int i = 0; i < 10000; ++i) {
obj = new Object();
}
Object obj;
for (int i = 0; i < 10000; ++i) {
obj = new Object();
}