DESKTOP-E68IKVH_20200828-魏海荣
一、问题:
String s = "hello" ;
char[] data = { 'h' , 'e' , 'l' , 'l' , 'o' };
String x = new String( data );
String t = x.intern();
System.out.println( s == x ); // false
System.out.println( t == s ); // true
System.out.println( x == t ); // false
char[] data = { 'h' , 'e' , 'l' , 'l' , 'o' };
// 为了避免在字符串池中创建"hello"对应的String实例,所以这里是采用char数组创建String实例
String x = new String( data );
// 调用x.intern()时, 会首先检查 字符串池 中是否存中与x相等的String实例,
// 若已存在则直接返回字符串池中的String实例的引用
// 若不存在,则将x对应的String实例添加到字符串池中后返回该实例的引用
// (现行的JVM中不是在字符串池创建新的String实例而是将x对应的String实例直接添加到字符串池中)
String t = x.intern();
// 当出现"hello"时会首先查找 字符串池 中是否已经存在 与之相等的 String实例,
// 若存在则返回字符串池中的String实例的引用
// 若不存在,则在 字符串池 中创建一个新的表示"hello"的String实例,随后返回该实例的引用
String s = "hello" ;
System.out.println( s == x ); // true
System.out.println( t == s ); // true
System.out.println( x == t ); // true
}
这里没看懂,与顺序有关的是x 与 s 的顺序还是String t = x.intern();这个方法的顺序。
二吐槽:
上课感觉听懂了,下来就不会了。可能是感冒头晕脑子不合适了。
点赞