html5网站建设企业论文,网络营销策划课程,公司推广方法有哪些,平面设计的素材网站特点
1 只要是双引号引起来的字符串都存储在常量池中
2 每次存储字符串的时候#xff0c;先检查常量池是否有该字符串#xff0c;如果没有则存储#xff0c;有则直接使用常量池中的字符串。
示例一#xff1a; 字符串String由两部分组成#xff0c;value(存储常量池中的…特点
1 只要是双引号引起来的字符串都存储在常量池中
2 每次存储字符串的时候先检查常量池是否有该字符串如果没有则存储有则直接使用常量池中的字符串。
示例一 字符串String由两部分组成value(存储常量池中的字符的地址)和hash(保存字符的Ascall码值)。
比如hello在常量池中的地址为0x78,那么指向hello的String对象的value就是0x78. 按照上图和代码进行分析。
s1和s2并没有创建新的String对象s1,和s2的地址相同都指向的是常量池中的String对象。
s3s4,s5均创建了新的对象其创建的String对象的value指向常量池字符串。因此s3,s4,s5保存的是各自对象的地址。
如果太复杂可以简单理解为
s1-----常量池中的字符
s3-----创建的String对象------常量池字符
当hello第一次出现的时候系统先会在常量池中是否存有hello如果没有那么就在常量池中存储hello,当第二次使用hello的时候这时在常量池中可以找到hellohello就不需要在存储了。即常量池不会重复存储相同字符。
示例二 intern 再来看这两张图我们要注意s1中会创建新的对象这个对象指向的是一个字符数组并不会存储在常量池中只有s2的“abc”会存储在常量池里。
但是当我们用intern的方法后 此时结果为true。 添加了intern是把s1创建的字符串对象加入到了常量池中此时s2可以在常量池中找到abc这个字符串对象因此相同