(java)来比较一下这两个语句

来源:百度知道 编辑:UC知道 时间:2024/06/01 12:41:38
public static String tosql(String str){
String sql = new String(str);
......
}

public static String tosql(String str){
String sql = str;
......
}

请问以上对sql的赋值方式有什么不同吗?
第二个方法的话,sql是一个到str对象的引用?还是生成一个新对象啊?

问题我已经搞清楚了,第一种方法是创建一个新对象,占用新的内存地址;第二种方法只是同一个对象引用的拷贝,没开辟新的内存空间.

有一点区别,
String sql=new String(str);
是直接生成对象.

String 是Java中比较特殊的类,因为他的常用,所以设计者为它重载了+,=.
String sql=str;
实际过程是先创建StringBuffer(因为有append()方法,对应于+),再转化成string,效率低,如果追求高效率,不应该这样用.

有啊,第一个new了一下。运行结果上看不出来什么区别,有区别也就是理论上的。本来入口参数就是String的了,在转化也没什么必要。

效果完全一样的,只不过语法不同而已。
String str="啊啊啊";
String str=new String("啊啊啊");
str的值就是"啊啊啊"

2。应该i是一个到str对象的引用