ドメインを初期化するためのJavaのStringの初期化文字列フィールドとStringコンストラクタの違い

これは、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」に見出さスプライシングされます。

 

おすすめ

転載: www.cnblogs.com/zoey686/p/11718938.html