一般的に使用されるクラス String
(推奨チュートリアル: java 入門チュートリアル)
String クラスは文字列を表します。 Java プログラム内のすべての文字列リテラル ( "abc" など) は、このクラスのインスタンスとして実装されます。
文字列は定数であり、作成後に値を変更することはできません。文字列バッファーは変更可能な文字列をサポートします。 String オブジェクトは不変であるため、共有できます。
String ソース コード
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { }
String メンバー変数
//String的属性值 private final char value[]; //数组被使用的开始位置 private final int offset; //String中元素的个数 private final int count; //String类型的hash值 private int hash; // Default to 0 private static final long serialVersionUID = -6849794470754667710L; private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];
ソース コードから、String の最下層が文字配列を使用して維持されていることがわかります。
メンバー変数は、String クラスの値が Final 型であり変更できないことを認識できるため、値が変更される限り、新しい String 型オブジェクトが生成され、String データを格納する必要はありません。配列の 0 番目の位置から開始します。要素から始まりますが、offset が指す要素から始まります。
(ビデオ チュートリアルの推奨: Java ビデオ チュートリアル)
文字列オブジェクトの作成方法
String s1 = "hello" ; String s2 = "world" ; String s3 = "hello" ; System. out. println(s1 == s3) ; //true
S1 と S3 の「hello」と「hello」 s2「world」の「」はメソッド領域の定数プールに存在します。
図に示すように:
つまり、 s1==s3
s1 = new String ("hel1o") ; s2 = new String ("hel1o") ; System.out.println(s1 == s2) ; //false System.out.println (s1.equals (s2) ) ; // true
s1 と s2 は、new とexist を通じて 2 つの String オブジェクトを取得します。ヒープ内ではアドレスが異なります。 s1 と s2 は 2 つの参照であるため、比較されるのはアドレス、s1 != s2 です。
StringのequalsはObjectのequalsを書き換えるもので、Objectのようにアドレスを比較するのではなく値を比較するのでs1.equals(s2)はtrueになります。
rree以上がよく使用される Java クラス String クラスの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。