首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

String中"+"的有关问题(nu)

2012-01-23 
String中+的问题(nu)Java codepublic class NullTest {public static void main(String[] args) {String

String中"+"的问题(nu)

Java code
public class NullTest {    public static void main(String[] args) {        String str1=null;        String str2=null;        String str3=str1+str2;        System.out.println(str3);//问题1,别运行,打印什么?        //问题2,str3存储在哪?        //问题3System.out.println(str3==?);这里的?写什么才会打印true    }}


[解决办法]
String str1=null;
String str2=null;
String str3=str1+str2;


等价于:
String str3 = new StringBuilder().append((String)null).append((String)null).toString();


append(String)的源码:
Java code
public AbstractStringBuilder append(String str) {        if (str == null) str = "null";        int len = str.length();        ensureCapacityInternal(count + len);        str.getChars(0, len, value, count);        count += len;        return this;    }
[解决办法]
1
String对象相加,内部会使用StringBuilder来操作,就像10L说的
所以 str1+str2 会变成 StringBuilder.apennd("null").append("null")

2
str3保存在堆中

3
从1可以知道,str3是由StringBuilder对象的toString方法在堆中生成的对象,除了str3外没有其他引用变量引用该对象,所以只能自己==自己,才能返回 true

热点排行