Java 访谈:当我初始化字符串str=”;美国广播公司;;字符串str1=&x201D;美国广播公司;;字符串str=”;xyz&x201D;
最近我在那里参加了一次采访,他们问了我无法回答的问题 初始化时内存中会发生什么Java 访谈:当我初始化字符串str=”;美国广播公司;;字符串str1=&x201D;美国广播公司;;字符串str=”;xyz&x201D;,java,string,memory,Java,String,Memory,最近我在那里参加了一次采访,他们问了我无法回答的问题 初始化时内存中会发生什么 String str = "abc"; String str1 = "abc"; String str = "xyz"; 假设第三个变量应具有不同的名称: 在编译时,相同的“abc”字符串将与“xyz”一起拉入字符串池。因此,您将得到两个字符串变量,它们指向同一个“abc”实例,一个指向“xyz”,将在字符串常量池(SCP)中创建一个包含内容的字符串对象 "abc" 1.strreference将指向该对象
String str = "abc";
String str1 = "abc";
String str = "xyz";
假设第三个变量应具有不同的名称:
在编译时,相同的
“abc”
字符串将与“xyz”
一起拉入字符串池。因此,您将得到两个字符串变量,它们指向同一个“abc”
实例,一个指向“xyz”
,将在字符串常量池(SCP)中创建一个包含内容的字符串对象
"abc"
1.str
reference将指向该对象
在创建第二个对象时,jvm将检查SCP中是否有相同的“abc”内容
在你的情况下,已经可以这样做了
2str1
将指向现有对象
3.String str=“xyz”
已经str
指向了abc
内容对象,我们再次分配给xyz
Code will not compile as you are using duplicate `str` variable
这样想,
Str
初始化为“abc”时,然后文本“abc”获取字符串池中的内存,因此变量Str
获取对该“abc”的引用
Str
------------------------------------>abc
Str
------------------------------------>abc
abc
xyz
Code will not compile as you are using duplicate `str` variable
abc
和xyz
Str
----------------------------------->xyz
和Str1
----------------------------------->abc
此代码没有编译?除非有人这样问,否则请更正引号类型
”“
这是否真的是一个面试问题?在采访中,我从未被要求了解这些知识。这很好。我相信,关于OOP、设计模式、最佳实践等方面的知识比了解字符串池(尽管我也认为,优秀的Java程序员应该了解这些内部结构)更有价值。那家伙只问了弦的事。