日期:2014-05-20  浏览次数:20714 次

求大神解释为什么“”在这段代码中的null在这段代码中的区别!!
	public void setParameter(String parameter, String parameterValue) {
String v = "";
if(null != parameterValue) {
v = parameterValue.trim();
}
this.parameters.put(parameter, v);
}

我知道“”是new出了个新的对象,而null没有,而在性能上new一个新的对象是要耗费系统性能上,如果把“”改为null是不是更好,或者说在这段代码用用“”更好,但是我不知道原因,有知道的大神吗?真心求教!
------解决方案--------------------
你可以设为null,只是访问时注意一下即可,""这是指向空字符串
------解决方案--------------------
 看到到this.parameters.put(parameter, v);
说明你的 Map<String,String>parameters
parameters.put(parameter,null); 是没有问题的
 if(null != parameterValue) 的判断
只是防止 parameterValue为空的时候 parameterValue.trim()会出现异常
又:“”是new出了个新的对象
所以:“”改为null是不是更好
------解决方案--------------------
引用:
 看到到this.parameters.put(parameter, v);
说明你的 Map<String,String>parameters
parameters.put(parameter,null); 是没有问题的
 if(null != parameterValue) 的判断
只是防止 parameterValue为空的时候 parameterValue.trim()会出现异常
又:“”是new出了个新的对象
所以:“”改为null是不是更好

“”改为null更好
就你目前这段代码而言 。
------解决方案--------------------
关键还是看这行代码 this.parameters.put(parameter, v);,如果允许v是null,就用null。正如你所说的,null对象不用创建,不过String v ="";这个并没有创建新对象,这里用的是常量池中的“”。如果是String v = new String("");这就创建了新对象,有一丁点性能影响。
------解决方案--------------------
没有感觉使用null 在性能上有多大的提升,
String v = "";  //这句代码并不会每次执行都new一个对象,如果jvm中已经存在“” 字符串,往后就不会再new 了,直接拿来用

用一个例子来解释,比如整个程序只有以下代码
String v1 = "";   //会new 一个字符串 
String v2 = "";  //不会new
String v3 = "";  //不会new