オブジェクトの作成と破棄 - 不要なオブジェクトを作成しないように

参考:「効果的なJavaの」、「Javaのコア技術第1巻」

レビューに基づいて、

1.オートボクシング

などlong int型、float型、などの最も一般的な基本的なタイプ、対応があるラッパークラスが。以下のようなラッパークラス名とも彼らの対応、:整数、ロング、のようなフロート。

私たちは整数のリストを定義しますが、内部の角括弧ために好きなように書き込みintに許可されていない、あなたは整数を使用する必要があり、この時間は、次の通り:

ArrayListの<整数> ArrayListを= 新しいのArrayList <Integer型>();

我々は数字のこのセットに追加すると、実際には、我々は自動包装の過程を経て

arrayList.add(3)。

事実上、自動的に上記のコード:

arrayList.add(Integer.valueOf(3))。

この変換は、と呼ばれている自動包装。

逆に、私たちオブジェクトは整数型intに代入されたときに、自動的になりますアンパック。

注意すべきいくつかの必要性:

使用等号との比較の1.Integerタイプ。

2.パッキングと、コンパイラではなく、仮想マシンに認識さアンパック。上記変換は、コンパイラによって、対応するバイトコードを生成することであるように、仮想マシンは、これらのバイトコードを実行します。

 

不要なオブジェクトを作成しません

個々のオブジェクトを再利用することが望ましい1

一般的に、それはあなたが新しいオブジェクトを作成するために、同じ機能を必要とする単一のオブジェクトの代わりに、それぞれの時間を再利用するのが最善です。再利用は、高速かつ一般的な方法です。

オブジェクトは不変であるならば、それは常に再利用することができます。

 悪い例:

STR =文字列の新しい新しい文字列(「再利用可能なオブジェクト」);

上記のステートメントを実行すると、それぞれの時間は、新しいStringインスタンスを作成します。次のように改善した後、次のとおりです。

文字列str =「再利用可能なオブジェクト」。

上記のコードは、同じ仮想マシンで実行されているすべてのコードは、限り、彼らは同じ文字列が含まれているとして、オブジェクトが再利用されます。

 

2.優先静的ファクトリメソッドの代わりにコンストラクタ

コンストラクタは、新しいオブジェクトにそれが呼び出されるたびに作成し、静的ファクトリメソッドはしないでしょう。

静的ファクトリメソッド:https://www.cnblogs.com/lbhym/p/11787505.html

 

3.自動梱包は不要なオブジェクトを作成することが

代わりに、ラッパークラスの基本的なタイプを使用します。

例は本の中で与えられています。

プライベート 静的 長い和(){ 
  ロング和 = 0L 以下のための長い I = 0; I <= Integer.MAX_VALUEで、I ++ ){ 
    合計 + = I。
}   
  戻り値の和。
}

long int型を使用する必要があります上記のプログラムは、正の整数intの和であるため受信できません。

和文が長くなった、実際の業績は正しいですが、時間が長いをたくさん持って、各マシンは同じではないかもしれません。

 

おすすめ

転載: www.cnblogs.com/lbhym/p/11813834.html