Javaプログラミングのアイデアの初期化とクリーンアップ

初期化コンストラクタを確認してください:コンストラクタによって、各オブジェクトが初期化されていることを確認してください。同じ名前を持つクラスのコンストラクタの名前。あなたがオブジェクトを作成するときにスペースを割り当て、初期化され、適切なコンストラクタを呼び出します。Javaでは、初期化して、一緒にバンドル作成し、それを分離することはできません。コンストラクタは特殊な方法であり、戻り値はありません。

メソッドのオーバーロード:同じ名前のパラメータ法の異なる形式は、各オーバーロードされたメソッドは、正式なパラメータリストで区別します。渡された実際のパラメータは、仮パラメータの型より小さい場合、自動的に(CHARタイプがint型に変換されるため)実際のデータ型が促進される変換します。パラメータは、入力パラメータの実際のフォームよりも大きい場合は、縮小変換を表示する必要があります。

デフォルトコンストラクタ(デフォルト、引数なし):書き込みがクラスのコンストラクタ、自動的に作成したコンパイラではありません。引数のコンストラクタが定義されている場合は、手動で引数なしのコンストラクタを定義する必要があります。

このキーワード:密かにコンパイラは、メソッドに渡される最初のパラメータとして「操作対象を参照します」。あなたが現在のオブジェクトへのメソッド参照の内側に取得したい場合はメソッドを呼び出して、それがこれである、このメソッドは内部でのみ使用することができます。あなたは、同じクラスのメソッドで別のメソッドを呼び出す必要がある場合、これを直接呼び出すことが、必要はありません。

これはまた、コールする構成で構築することができます。コンストラクタは一つだけ、他のコンストラクタを呼び出すことができ、非常に始まり、それ以外の場合はエラーを置くこと。唯一の他の場所でこれでコンストラクタを呼び出すことはできませんコンストラクタで呼び出すことができます。

これは、静的な、非静的な方法で理解されている順番にできる静的メソッド内から呼び出すことができません。直接呼び出される一般的な静的クラスを使用すると、オブジェクトを作成する必要はありません。クラスの静的メソッドの中に、あなたは他の静的フィールド、および静的なメソッドにアクセスすることができます。

// クラス内の他の方法は、この呼び出しではないかもしれ
パブリック クラスをアプリコット{
 ボイドピック(){} ......
 無効(PIT)を{(ピック); ......)
} 

// 現在のこの表現と参照オブジェクト
パブリック クラス葉{
     int型 I = 0 ; 
    葉INCREMENT(){ 
        私は ++         これを返す; 
    } 
    ボイドプリント(){System.out.printlnは( "私は=" + I);}
     パブリック 静的 ボイド(主文字列[]引数){ 
         葉X = 新しい新しいリーフ(); 
         ... x.increment()INCREMENT()INCREMENT()プリント();  // 。I = 3 
    } 
} 

// 他の現在の方法のこのオブジェクトの
 クラス人{
      公共 ボイド(アップル)EATを{ 
         アップル剥離 = apple.getPeeled(); 
         System.out.print(の "おいしいです" ); 
     } 
} 
クラスピーラー{
     静的アップルピール(アップル){
         // 削除剥離が
        戻りアップル; // 剥離
    } 
} 
クラスアップル{ 
    アップルgetPeeledは(){ 
        戻り Peeler.peelを(この); // 外部に自身を転送するためにこの方法を使用
    } 
} 
パブリック クラスPassingThis { 

    公共 静的 ボイドメイン(文字列[]引数){
         // TODO自動生成方法スタブ
        新しい人()(食べる。新しいアップル())。
    } // おいしいです 
}
// この调用构造器
輸入 静的 net.mindview.util.Print *。;
パブリック クラスの花{
     INT petalCount = 0 
    文字列s =「初期値」; 
    花(int型の花弁){ 
        petalCount = 花弁。
        プリント( "コンストラクタW / INT引数のみ、petalCount =" + petalCount)。
    } 
    フラワー(文字列SS){ 
        印刷( + "のみ、S = argのコンストラクタW /文字列" SS)。
        S = SS。
    } 
    (文字列S、花INT 花弁){
        この(花びら); //は一つだけ呼び出すことができる、との冒頭に置かれる
        この .S = Sで; // sがメンバーである前に、sがパラメータである後に 
        印刷(「INT&文字列引数」); 
    } 
    フラワー( ){ 
        この( "こんにちは"、47 ); 
        印刷( "デフォルトcomstructor(NO引数)" ); 
    } 
    ボイドprintPetalCount(){ 
        プリント( "petalCount =" + petalCount + "S =" + S); 
    } 
    公共の 静的な 無効メイン(文字列[]引数){ 
        フラワーX = 新しい新しいフラワー(); 
        x.printPetalCount(); 
    } 
} / *出力:
コンストラクタのw / int型引数のみ、petalCount = 47 
文字列&int型引数
デフォルトcomstructor(引数なし)
petalCount = 47S = HI 
* /

 

クリーンアップ終了とガベージコレクション:ガベージコレクタはクラスで定義され、この場合、唯一の新しい割り当てメモリを再利用するので、特別な新しいメモリ領域に対しては、得られなかった(ファイナライズ可能)メソッドが回収されます。確定()が最初に呼び出され、ガベージコレクションが発生次回は、実際にメモリを回復します。共通のfinalize()以下がそれを実証し、いくつかの欠陥を発見します。

ガベージコレクションは、「デストラクタ」に等しくない;目的は、ごみではないかもしれないガベージコレクションは、メモリ関連

クラスブック{
     ブールチェックアウトした= ; 
    ブック(ブールチェックアウト){ 
        チェックアウトし = チェックアウト。
    } 
    無効チェックイン(){ 
        チェックアウトし = 偽を
    } 
    保護された ボイドファイナライズ(){
         場合(チェックアウトし){ 
            System.out.print( "エラー:チェックアウトを" )。
        } 
    } 
} 
パブリック クラスTerminationCondition { 

    公共 静的 ボイドメイン(文字列[]引数){
        // TODO自動生成されたメソッドスタブ 
        帳小説= 新しいブック(真の);
        // 適切なクリーンアップ
        novel.checkIn();
        // 、参照をドロップクリーンアップするのを忘れ
        、新しいブック(真の);
        // 力ガベージコレクション&ファイナライズ 
        にSystem.gc();    // エラー:チェックアウト
    } 
}

ことは、この例終了:すべてのブックのオブジェクトがGCされる前にチェックインされているが、1は、チェックインの上過失によるものではないが、それは誤りをプリントアウトし、回復しました。ファイナライズして()は、この終了条件を確認します。

メンバーの初期化:ローカル変数のメソッドを初期化しなければならない、とクラスフィールドは偽、ヌル、0にデフォルトで初期化することができます。

コンストラクタの初期化:必要な時にのみ行われ、静的な初期化は、最初の時間が作成されたに行う再初期化することはできません。

オブジェクトの作成は:、クラスパスを探すの.classファイルを探します。1
          2の.class負荷を、静的な初期化
       の新しいオブジェクトがでオブジェクトに割り当てられたヒープメモリ空間3
       オブジェクトの4本収納スペースがクリアされ、自動的にすべての基本タイプデフォルト値に設定
       5は、すべての実行に表示されるフィールドでの動作を初期化定義を
       実行6 コンストラクタを

// 順序は、様々な初期化の発生(静的初期化に特に注意して一度だけ実行される)
インスタンスの初期化は、それが呼び出されるたびに実行される//
クラスボウル{ ボウル(int型マーカー){ するSystem.out.println(「ボウル(」+マーカー+ " ) " ); } ボイド F1(int型マーカー){ するSystem.out.println( " F1( "+マーカー+") " ); } } クラス表{ 静的ボウルbowl1 = 新しい新しいボウル(1 ); // ---- 1 表(){ // ----- 3 のSystem.out.println( "表()" ); bowl2.f1( 1。); } 無効 F2(int型マーカー){ System.out.printlnは( "F2(" +マーカー+ ")" ); } 静的ボウルbowl2 = 新しいボウル(2 )。// ----- 2 } クラス食器棚{ ボウルbowl3 = 新しいボウル(3 )。 // ------ 3 静的ボウルbowl4 = 新しいボウル(4 )。// ------ 1 食器棚(){ // ------ 4 のSystem.out.println( "食器棚()" )。 bowl4.f1( 2 )。 } 静的 無効 F3(int型マーカー){ するSystem.out.println( "F3(" +マーカー+ ")" )。 } 静的ボウルbowl5 = 新しいボウル(5 )。// ------- 2 } インポート 静的 net.mindview.util.Print *。; パブリック クラスStaticInitialization { 公共 静的 ボイドメイン(文字列[]引数){ (印刷「主に新しい食器棚を作成します()」)。// 3 新しい食器棚(); // 4、不再静态初始化 印刷( "メインで)(新しい食器棚を作成します" )。 新しい食器棚(); table.f2( 1 )。 Cupboard.f3( 1 )。 } 静的表テーブル= 新しい表()。// 1 静的食器棚食器棚= 新しい食器棚()。// 2 } / * 出力: ボウル(1) ボウル(2) 表() F1(1) - ボウル(4) ボール(5) ボウル(3) 食器棚() F1(2) 主に新しい戸棚()を作成します ボウル(3) 食器棚() F1(2) メインの新しい食器棚を(作成) ボウル(3) 食器棚() F1(2) 、F2(1) F3(1) * /

 

アレイの初期化:配列値だけ配列への参照を割り当てられました。固定長のアレイメンバーあり、変更することができません。参照型の配列または新規の後に配列への参照のために、あなたは新しいオブジェクトを作成し、初期化プロセスを完了するために、参照を割り当てるまで。null参照エラーを使用してください。

無効プリントアレイ静的(オブジェクト...引数){   //変数引数リスト
  (オブジェクトobj:引数)のための
    印刷(OBJ + "";
  のprintln();
}

おすすめ

転載: www.cnblogs.com/yh-queen/p/11179149.html