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类这些实例方法一下午讲这么多有点消化不了,还有就是换座位有点怪怪的,有点不适应。
点赞