目次
1.はじめに
文字列クラス:文字列を表します
Stringクラスはfinalであり、不変の文字シーケンスを表します
文字列は定数であり、二重引用符で示されます。作成後に値を変更することはできません。
Stringオブジェクトの文字コンテンツは、文字配列に格納されます
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
StringはSerializableインターフェースを実装します。これは、文字列がシリアライズ可能であることを意味します。
Comparableインターフェースを実装します。これは、サイズを比較できることを意味します
2.不変性
文字列に文字通り(新規とは異なる)値を割り当て、この時点での文字列値は文字列定数プールで宣言されます
同じ内容の文字列は文字列定数プールに保存されません
-
文字列を再割り当てすると、メモリ領域の割り当てが再定義され、元の値は割り当てに使用されません。
-
文字列を連結する場合、メモリ領域を再設計する必要があり、元の値を割り当てることができません
-
置換を使用して文字を置換する場合、メモリ領域も再定式化する必要があり、元の値を割り当てることができません
3、文字列のインスタンス化
1.リテラルメソッド
String s = "abc";
2.コンストラクターを使用します
String s = new String("abc");
4、文字列変換
1.文字列とchar []間の変換
字符串 --> char[] 调用String的toCharArray方法 char[] --> 字符串 调用String的构造器
String s = "coasjc";
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
System.out.println(chars[i]);
}
char[] c = new char[]{
'a','c','d'};
String s1 = new String(c);
System.out.println(s1);
2.文字列とbyte []間の変換
String-> byte []はエンコーディングと呼ばれ、StringのgetByteメソッドを使用します
byte []-> Stringは、Stringコンストラクターを使用してデコードと呼ばれます
//使用默认字符集进行解码
String s = new String(bytes);
//使用指定字符集进行解码
String s1 = new String(gbks, "GBK");
要件:デコードされた文字セットは、エンコードに使用された文字セットと一致している必要があります。一致していないと、文字化けした文字が表示されます。