1。これを行う目的:
1。効率(最も重要)
2。読みやすさ、後の段階で維持しやすい。 (また重要)
2。コード最適化の要件:
1.コードのボリュームを減らします。
2。コードの実行効率を改善します。
3。一般的に使用されるコードの最適化:
1。オブジェクトを再利用してみてください:
特に文字列オブジェクトの再利用。最も一般的に使用される文字列スプライシング:
文字列の頻繁な拭き取りに遭遇したとき。 stringbuilder/stringbufferを使用することを忘れないでください
例えば:
ArrayList <String>リスト; stringbuilder builder = new StringBuilder();
理由:Java仮想マシンは、オブジェクトの生成に時間を費やす必要があるだけでなく、オブジェクトを処理してリサイクルすることに時間を費やす必要があります。
2。可能な場合はローカル変数を使用します。
ローカル変数はスタックに作成され、追加のガベージコレクションなしで、使用後に迅速に作成され、自動的に消えます。
静的変数、インスタンス変数などはヒープで作成され、作成速度は遅く、処理するJava Garbage Collectionメカニズムにも依存しています。
3。時間内に流れを閉じます:
Javaプログラム開発では、I/Oおよびデータベース操作が完了した後、フローを閉じることを忘れないでください。
原因:フローを閉じないことは、システムに大きなオーバーヘッドを引き起こす可能性があり、データに深刻な結果さえある場合さえあります。
4.怠zyなロードを使用します
レイジーロード:このオブジェクトが使用される場合にのみ作成します。
例えば:
string fix = "gebi";
置き換えてください:
if( "laowang"。
5.使用しないでください...ループでキャッチして、使用してみてください...ループの外でキャッチします
6.try ...キャッチは大きすぎてはいけません。
すべての役に立たないコードを配置しないでください。つまり、例外はトライ...キャッチブロックにスローされ、トライのサイズを減らします...キャッチコードブロック。
コードの読みやすさ、メンテナンス、堅牢性を確保します。
7.ループ内のオブジェクトへの参照を作成しないようにしてください。
特に循環量が大きい場合。
while(i <1000){object object = new object();それを変更することをお勧めします:
object object = null;
新しいオブジェクト()が新規であるたびに、オブジェクトオブジェクトの参照はオブジェクトオブジェクトを指します。
たとえば、最初のタイプなど、多くのループがある場合、JVMはオブジェクトへの1,000の参照を作成しますが、2番目のタイプにはメモリに1つのオブジェクトオブジェクト参照のみがあります。これにより、メモリスペースが大幅に節約されます。
8。静的変数を自由に使用しないでください。
オブジェクトが静的宣言された変数によって参照される場合、Java Garbage Collectorはオブジェクトが占有しているヒープメモリをクリーンアップしません。
静的変数が占めるヒープメモリは、変数が配置されるプログラムまでリリースされません。 つまり、静的変数ライフサイクル=クラスライフサイクル。
9.未使用のオブジェクトを作成しないでください。また、未使用のクラスをインポートしないでください。
10。バッファリングされたI/Oストリームを使用します:
バッファリングされたI/Oストリームは、I/O効率を大幅に改善できます。 BufferedWriter、BufferedReader、BufferedInputStream、BufferedOutputStream。
11。ラップデータを文字列に変換して使用します:ToString
整数i = 1;
ラップデータを文字列メソッド速度のランキングに変換します。
i.toString> string.valueof(i)> "" + i
12.mapトラバーサル効率:EntrySet> KeySet
// entryset()for <string、string> entryset()){string key = entry.getValue(); : " + value);} //上下を比較// keyset()for(string key:map.keyset()){string value = map.get(key); system.out.println(key +": " + value);}13。Iteratorとforeach()のコレクショントラバーサルについて。
アルゴリズムの概要:アルゴリズムは、スペースの効率と時間の効率を改善することを目的としています。しかし、多くの場合、時間と空間は共存できません。
時間効率:iterator> foreach()
コードの読み取り可能性:foreach()> iterator
// iterator set <entry <string >> entryset = map.entryset();文字列= iter.next();
対比:
// foreach for(entry <string、entry:map.entryset()){key = entry.getValue(); : " + value);}個人的には、ビッグデータを処理するときにコレクションを通過するためにイテレーターを使用することをお勧めします。
ただし、小さなデータ処理の場合、foreach()は、読みやすさとその後のメンテナンスに依然として使用されます。
両方を組み合わせて使用するときは、両方を習得する必要があります。