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、吐槽

早上有点冷,中午有点热。

标签


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1