java内存分配问题,请进....

2025-03-27 11:04:21
推荐回答(2个)
回答1:

String s1="java"; 一个地址
String s2="blog";一个地址

String s=s1+s2;一个地址

System.out.println(s=="javablog"); javablog 又一个地址。

以上会有4个地址,==比较的是地址,所以就false了。

 

		String s1="java";
String s2="blog";
String s=s1+s2;
String s3="javablog";
System.out.println(s=="javablog");
System.out.println(s3=="javablog");
System.out.println(s1=="java");

你再试试这个,这里面还有一个字符串常量池的问题,还有字符串拼接的问题啊。

你可以需要深入了解。

回答2:

字符串用加号操作会生成一个新的对象,因此s1一个对象,s2一个对象,s一个对象,"javablog"一个对象,总共有4个String对象,他们的地址都是不同的

建议从Thinking in Java看起,这里面有很多基础的东西