public class Strings
{
public static void main(String ads[])
{
String a = "meow";
String ab = a + "deal";
String abc= "meowdeal";
System.out.println (ab==abc);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么输出false?在这个程序ab是在string文字中创建然后abc创建但是为什么ab而abc不是在字符串常量池中引用相同的内存,因为在创建abc它之前在字符串常量池中搜索String meowdeal.
Java只汇集它在编译时知道的字符串; 字符串常量和常量字符串表达式.a是一个局部变量,所以+"deal"是一个字符串表达式,直到运行时才会被计算(即使你看它也可以看到它应该是常量).Java编译器不知道它是一个常量表达式,并且不会将它放在池中.它在运行时执行字符串连接,从而产生与池中任何对象不同的对象.
| 归档时间: |
|
| 查看次数: |
389 次 |
| 最近记录: |