Javaプログラミングの注意事項、継続的な更新


1、メソッドの戻り値はnullが出ないようにする
public List getStringList() {
	List result = new ArrayList<>();
	/**
	 *   result       
	 * 
	 *        
	 * List result = null;
	 */
	return result;
}

2、比較的複雑な業務ロジックに対して、Java処理を使用するか、それともストレージプロセスを選択するか.
通常、エラー・プロシージャの処理性能はJava処理よりも優れているが、ストレージ・プロシージャはメンテナンスが容易ではないため、通常、パフォーマンスに対する要求が特に厳しくない場合はJava処理を推奨すればよいが、Java処理がパフォーマンス要件を満たすことができない場合は、ストレージ・プロシージャの使用を考慮することができる.
3、対象がループ内にあるかループ外にあるかの問題
ローカル変数の最小役割ドメインを満たすコンセプトをループ内で定義しますが、ループ内で定義するたびにローカル変数が新しく作成され、スタックフレームのメモリ領域が申請されるため、メモリ領域が多く使用されます.余分なメモリが何に使われているのか考えてみましょう.ループの外で宣言されたオブジェクトは、ループのたびに繰り返し使用できるので、参照が1つしかなく、繰り返し使用され、スタックに置かれたオブジェクトも毎回新しいです.一方、オブジェクトをループの内部に配置すると、そのたびにオブジェクトが再宣言され、そのオブジェクトの参照も新しいので、全体的にループ内に配置するのはループの外に配置するよりも多くの参照にすぎません.また、ループが実行されるたびに、リファレンスはリサイクル可能な状態としてマークされます.総合的に見ると、循環体内に置いても循環体外では格差はあまり影響していない.
結論:対象は循環体内に置いて体外に循環し、個人の習慣によって良い
4、関連計算はBigDecimalを使用することができる.
5、cloneメソッドは、cloneが必要なときに構造メソッドで生成できますが、cloneメソッドの使用は推奨されません(性能も実用的ではありません)
6、JVM仮想マシンは整数データの付与値を最適化した.ここでintegerの範囲が[-128127]の間で整数定数プールで直接データを取る場合、この範囲でないデータは再newデータに出るので、比較サイズを行う際に注意しなければならない.==比較を行う際、範囲内で判断できる場合、範囲内でない場合、どちらも新しいオブジェクトなので、2つのオブジェクトは==比較サイズを使用しても決して等しくありません.
7、JVM仮想マシンは整数データの付与値を最適化した.ここでintegerの範囲が[-128127]の間で整数定数プールで直接データを取る場合、この範囲でないデータは再newデータに出るので、比較サイズを行う際に注意しなければならない.==比較を行う際、範囲内で判断できる場合、範囲内でない場合、どちらも新しいオブジェクトなので、2つのオブジェクトは==比較サイズを使用しても決して等しくありません.
8、先に宣言してから使用します.クラスをロードするときにクラスの初期化が行われるので、静的変数もこのとき初期化するには、まず変数に空間を割り当ててから賦値を行うので、静的変数は先に使用してから宣言することができますが、賦値操作を行うときは静的変数の賦値順に賦値操作を行います.
9、静的変数または静的メソッドにかかわらず、インスタンス化されたオブジェクトを使用してアクセスする場合、インスタンス化されたオブジェクトは実際に対応するクラスを見つけ、クラスに基づいて静的メソッドにアクセスするため、インスタンス化されたオブジェクトを使用しないでください.ただし、インスタンス化されたオブジェクトはマルチステート形式で生成される可能性があります.実際には、Parent a=new Child()などの親を使用してアクセスされ、子と親には静的メソッドgetName()が存在し、a.getName()は最終的にparentのnameになります.
10、サブクラスがインスタンス化されると、まず親を初期化し、親の変数とコンストラクション関数を初期化し、完了してからサブクラスの変数とコンストラクション関数を初期化し、静的変数を初期化してからコンストラクション関数を初期化します.