DESKTOP-86ONKLH_20200831-刘天阳
1、问题
对于 String 相加是自动调用 StringBuilder 缓冲区和被final修饰时相加不太理解
final String x = "疑是" ;
final String y = "地上霜" ;
String s = "疑是地上霜" ;
String p = x + y ; // 注意这里的 + 起连接作用(连接字符串)
System.out.println( s == p ); // true
String q = x + "地上霜" ;
System.out.println( s == q ); // true
String w = "疑是" + y ;
System.out.println( s == w ); // true
String e = "疑是" + "地上霜" ;
System.out.println( s == e ); // true
又做了一下,然后理解了差不多,既当两个字符串相加时,自动运行 StringBuilder builder = new StringBuilder( x );
builder.append( y );
String p = builder.toString(); 在缓存区存放 x ,然后在末尾追加 y 将缓冲区中的内容构造成 String实例 (即创建新的String实例),而当final修饰时,既变量的值就为字符串内容,既两个字符串相加,然后将连接的字符串和池里面对比,是否有想等的值。
2、吐槽
早上有点冷,中午有点热。
点赞