求大神解释为什么“”在这段代码中的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是不是更好
------解决方案--------------------
“”改为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