String字串儲存:分析字串是不可變物件的原因
阿新 • • 發佈:2022-03-09
String字串儲存
-
String字串:儲存分析
-
-
1.1原始碼分析:構造方法,用於建立物件;
//1,String的構造方法:String();
public String() {
this.value = "".value;
}
//2,String的構造方法:String(String);
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
//3,String的構造方法:String(char[]); //重點分析
public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
}
/*
筆記:
1,根據構造方法3,可以看出,String內部維護了一個char[]陣列,呼叫Arrays類的copyOf方法;
2,分析Arrays類;
3,分析copyOf()方法:該方法被static修飾,不能被子類重寫;存放在記憶體的方法區,只有一份!
*/
-
1.2:字元陣列儲存:
-
字元陣列:Arrays.copyOf();
-
該方法被static修飾,不能被子類重寫;static修飾的方法,存放在方法區;
/**
* 總結:分析Arrays類:
*
*/
public class ArraysDemo01 {
public static void main(String[] args) {
//1.1 定義一個字元陣列
char[] charArr=new char[5];
//1.2 給陣列賦值
charArr[0]='h';
charArr[1]='e';
charArr[2]='l';
charArr[3]='l';
charArr[4]='o';
//1.3 遍歷陣列
for (char x: charArr) {
System.out.print(x);//hello
}
System.out.println("-----------------");
/**
* 用Arrays類的copyOf(char[],int i)方法:
* 1,引數型別:char[]陣列,int型別;
* 2,返回值型別:char[];
* 3,該方法被static修飾;
*/
//1.4
char[] charArr1=Arrays.copyOf(charArr,5);
for (char c:charArr1) {
System.out.print(c);//hello
}
}
}
-
-