字符串池可以包含两个具有相同值的字符串吗?
String str = "abc";
String str1 = new String("abc");
Will the second statement with `new()` operator creates two objects of `string` "abc", one on `heap` and another on `string` pool?
Now if i call intern() on str1 ie str1.intern(); as a third statement, will str1 refer to the "abc" from String pool?
If yes then what will happen to the object that was created on heap earlier by the new(). Will that object be eligible for garbage collection.?
If no then what will be the result of str1.intern();?
Run Code Online (Sandbox Code Playgroud)
没有第一个也将创建一个对象,第二个将只创建一个字符串对象.区别在于第一个将在String池中创建,第二个将仅在堆中创建.如果你打电话给str1.intern(); 然后它将被添加到String池中.
String str1 = "abc";
String str2 = new String("abc");
Stirng str3 = "abc"
Run Code Online (Sandbox Code Playgroud)
这里将创建两个对象.第一行将创建一个具有引用str1的强对象,第三行将指向在第一行中使用引用str3创建的同一对象,但在第二行中将创建一个新对象,因为我们在new此处使用关键字.希望它会对你有所帮助.
还要检查这个答案.那里有很好的解释.
| 归档时间: |
|
| 查看次数: |
1763 次 |
| 最近记录: |