【发布时间】:2015-10-10 18:30:30
【问题描述】:
我想确认创建的两个字符串变量是否指向同一个内存。我使用普通类的方式
Ideone a=new Ideone();
Ideone b=a;
System.out.println(a+" "+b);
输出
Ideone@106d69c Ideone@106d69c
这里产生的输出不是确切的内存地址,而是给出了相同的十六进制代码,我可以说它们都指向相同的内存地址或值。
但是在字符串的情况下
String a="helloworld";
String b="hello";
String c=b+"world";
System.out.println(a+" "+c);
输出
helloworld helloworld
这是预期的输出,我知道a,b,c 是在池中创建的,因为它们是编译时常量,a 和c 不指向相同的内存。但是 有什么办法我可以得到像String@23122这样的字符串的对象表示来获取该对象的十六进制代码以确认a和c不指向同一个内存?
因为在new String("helloworld")创建字符串的情况下,新内存被分配给字符串。
我已经搜索过了,但没有找到任何与我的问题相似的东西。
提前致谢。
【问题讨论】:
标签: java string object immutability pool