LAPTOP-8KA88UT5_20200827-陈浩

问题

1、String 类中的一个构造方法

public String (String orignal)
    //初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。

解决:

String a="asdf";    
String b = new String("asdf");

System.out.println(a==b);//false
System.out.println(a.equals(b));//true

@HotSpotIntrinsicCandidate
    public String(String original) {
        this.value = original.value;
        this.coder = original.coder;
        this.hash = original.hash;
    }

2、String 对象是不可变的,可以共享

解决:

String s = "qwer";
System.out.println( System.identityHashCode( s ) );
String d = "qwer";
System.out.println( System.identityHashCode( d ) );//s重写之前的hashcode值和d重写之前的hashcode值是一样的

System.out.println( s == x ); // true;s中的值和x中的值是同一个,因为第一次创建String类型的对象abc,它将存入字符串常量池中,之后"abc"将不再发生改变,当再次创建“abc”时,引用变量将直接指向字符串常量池中原有的“abc”对象
System.out.println( s.equals( x ) ); // true(equals方法已经重写)

吐槽

String类这些实例方法一下午讲这么多有点消化不了,还有就是换座位有点怪怪的,有点不适应。

标签

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