これは、Javaプログラミングのアイデア章のタイトル---初期化とクリーンアップです
演習2:
それは文字列のドメイン、文字列やコンストラクタで初期化され、他のフィールドを初期化した際の定義を含むクラスを作成し、これらの2つの方法の違いは何ですか。
最初の3つの知識のポイントをクリアし、プログラムのこのセクションとの結果を見てください:
1.Stringは、オブジェクトへの参照であります
2.equals()値の比較
3.「==」はアドレスの詳細です
文字列S1 = "ABC" ; 文字列s2を = "ABC" ; 文字列のS3 = 新しい文字列( "ABC" ); 文字列S4 = 新しい文字列( "ABC" ); System.out.println(S1 == S2)。// 真 のSystem.out.println(S3 == S4)。 // 偽 のSystem.out.println(S1 == S3)。 // 偽 のSystem.out.println(s1.equals(S2)); // 真 のSystem.out.println(s1.equals(S3)); // 真
二種類のjavaストレージタイプがありますが、1がなどのint、float型、などの変数の基本的なタイプで、Stringなどのオブジェクトのクラスへの参照で、自身が様々なクラス、配列を作成し、その上、新しいのために必要です
一般的なストレージおよびアウトヒープ内の2ヶ所でのオブジェクトの基本的なタイプ、スタック参照変数、新しい新しいオブジェクトを格納
また、「定数プールの底で発見定数プールのブロック領域、文字列S1 =「ABC」、「ABC」は、我々は文字列s2 =「ABC」を作成した後、一定のプールがあり、JavaのありますABCは」、この値にs2のポイントを聞かせて、再作成されません。最初は真であるので、
そして、私たちの新しいヒープがチェックされていない、アドレスは同じではありません。
例を見てください
文字列S1 = "AAA" ; 文字列s2を = "BBB" ; 文字列S3 = "AAABBB" 。 System.out.println(S3 == S1 + S2)。// 偽 のSystem.out.println(S3 ==( "AAA" + "BBB")); // 真
Javaは「S1 + S2」、次に文字列の連結、ヒープメモリにオープンしたときに、== S1 + S2が比較され、この例S3の
「AAA」+「BBB」の後従って等しい定数プール「AAABBB」に見出さスプライシングされます。