zoukankan      html  css  js  c++  java
  • String和.intern()

    final 和 String

    public static void main(String[] args) {
            String a1 = "a";
            String a2 = "b";
            // 非final串相加,指向堆中new的对象
            String a3 = a1+a2;
            String a4 = "ab";
            String a5 = new String("ab");
            System.out.println("a3==a4?"+(a3==a4));//false
            System.out.println("a3==a5?"+(a3==a5));//false
            System.out.println("a4==a5?"+(a4==a5));//false
    
            // final串相加,直接指向常量池中存在的
            final String a6 = "a";
            final String a7 = "b";
            String a8 = a6+a7;
            System.out.println("a3==a8?"+(a3==a8));//false
            System.out.println("a4==a8?"+(a4==a8));//true
            System.out.println("a5==a8?"+(a5==a8));//false
    
        }

    intern方法

    s3.intern()在 Stirng s4 = "11"之前

    public static void main(String[] args) {
            String s3 = new String("1") + new String("1");
            s3.intern();
            String s4 = "11";
    
            System.out.println(s3 == s4);// s3.intern()在 s4创建之前 true
        }

    s3.intern()在 Stirng s4 = "11"之后

    public static void main(String[] args) {
            String s3 = new String("1") + new String("1");
            String s4 = "11";
            s3.intern();
    
            System.out.println(s3 == s4);// s3.intern()在 s4创建之后 false
        }

    直接new String("11") 也返回false

    public static void main(String[] args) {
            String s3 = new String("11");
            s3.intern();
            String s4 = "11";
    
            System.out.println(s3 == s4);// false
        }

    猜想:s3 = new String("1")+ new String("1");时常量池中不存在"11"

    所以调用s3.intern()使得,s3指向了常量池。

    如果s3 = new String("11")那么常量池中会创建一个"11"则,调用s3.intern()不起作用s3还是指向new String("11")。

    或者s3 = new String("1")+ new String("1");s4 = "11"则,常量池中还是有"11"所以数s3.intern()不起作用

  • 相关阅读:
    SQL 基础技能提升
    科技领域的assert和deassert的含义
    PDF调出本来存在的书签面板
    什么是事务( Transaction )?
    verilog 和systemverilog的Timing Check Tasks
    PT静态时序分析的三种模式
    useful systemverilog system tasks
    Accellera举措可能导致Verilog标准分化
    验证方法学的发展历程及比较
    PrimeTime 时序分析流程和方法(ZZ)
  • 原文地址:https://www.cnblogs.com/wsZzz1997/p/14692889.html
Copyright © 2011-2022 走看看