效率差别不是非常大,但是意义不一样,第一个是定义一个新的字符串,第二个是将str指向"dd"这个字符串
解决方案 »
- java解析xml问题:如何获得一级标签下全部内容?
- 环形队列问题
- JDK7
- 跪求:java中标识数据的生存时间(顶既有分)
- 如何将数据存储在内存缓冲区 java
- 高分下无勇夫呼?求MP3转MID程序例子!
- Java API问题
- JBuilder编译时保的错Error #: 2301 : internal compiler error: java.lang.NullPointerException
- 为什么我运行j2se程序,那文本框不能显示?
- 请问java可以调用MS的activex控件吗?
- 问System.err.*的用法
- 还是我还是java打印问题 文本图片打印如何分页(对不起!我只有10分了)
则String str = "dd";
仅仅是将"dd"这个对象的引用赋给了str
而String str = new String("dd");
是根据"dd"这个String对象再次构造一个String对象,将新构造出来的String对象的引用赋给str所以当然是不一样的了
String str="dd";这个只是一个引用,内存中如果有“dd"的话,str就指向它,如果没有才创建
但两者确实有着本质上的差距。
你可以自己想一下是传一个应用给String快,还是创建一个对象后再将这个对象的引用赋给String快呢?
public static void main(String[] args) {
String str1 = new String("dd");
String str2 = "dd"; System.out.println(str1 == str2);
//这里是比较引用,输出为false System.out.println(str1.equals(str2));
// 这里比较的是引用指向的对象的值,都是'dd',输出为true
}
}
public static void main(String[] args) {
String str1 = new String("dd");
String str2 = "dd"; System.out.println(str1 == str2);
//这里是比较引用,输出为false System.out.println(str1.equals(str2));
// 这里比较的是引用指向的对象的值,都是'dd',输出为true
}
}
问:当中str1自然是对象了,那么str2是否也是一个String 对象?还是,只是一个指向"dd"字符串的引用而儿?
就像C++中的指针?
其实这也是面向对象的特点