参考:「効果的な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の和であるため受信できません。
和文が長くなった、実際の業績は正しいですが、時間が長いをたくさん持って、各マシンは同じではないかもしれません。