172.16.0.151_20200829-陈政平

问题

    
    public static void main(String[] args) {
    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

}
    public static void main(String[] args) {
    String x = "疑是" ;
    String y = "地上霜" ;
    String s = "疑是地上霜" ;
    
    // StringBuilder builder = new StringBuilder( x ); // 在缓冲区中存放 "疑是"
    // builder.append( y ); // 在缓冲区末尾追加 "地上霜"
    // String p = builder.toString(); // 将缓冲区中的内容 构造 成 String实例 (即创建新的String实例)
    String p = x + y ; // 注意这里的 + 起连接作用(连接字符串)
    System.out.println( s == p ); // falsefinal String x = "疑是" ;
1.

final String x = "疑是" ;

final String y = "地上霜" ;

String p = x + y ;

此时的 "疑是" , "地上霜" 放在字符串池中还是放在缓冲区中。如果是在字符串池中,那么String p = x + y ;p算不算是创建了一个新的String实例?

2.

第二段代码中的System.out.println( s == p );输出false是因为

// String p = builder.toString(); // 将缓冲区中的内容 构造 成 String实例 (即创建新的String实例)。这个String实例 存在于字符串池中吗?

那么String s = "疑是地上霜" ;是否存在于字符串池中,如果存在于字符串池中,为什么他们之间会输出false?

吐槽

对细节的知识点掌握的不好,理解的不透彻。

标签

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