ステートメントを複数行に分割するよりも、すべてを 1 行にまとめたほうがよいとは思わないでください。一般に、Java コンパイラは、どちらの場合でもまったく同じバイトコードを生成できるほどスマートです。最新のコンパイラは、多くのマイクロ最適化を行います。
それらをコンパイルして違いがあるかどうかを確認してから、コマンドでバイトコードを逆コンパイルしjavap -c
ます。
編集 :
テストしたところ、結果は次のとおりです。
String str = editText.getText().toString();
str = str.trim().toLowerCase();
textView.setText(str);
コンパイルすると:
0: aload_0
1: getfield #7 // Field textView:Landroid/widget/TextView;
4: aload_0
5: getfield #4 // Field editText:Landroid/widget/EditText;
8: invokevirtual #8 // Method android/widget/EditText.getText:()Landroid/text/Editable;
11: invokevirtual #9 // Method java/lang/Object.toString:()Ljava/lang/String;
14: invokevirtual #10 // Method java/lang/String.trim:()Ljava/lang/String;
17: invokevirtual #11 // Method java/lang/String.toLowerCase:()Ljava/lang/String;
20: invokevirtual #12 // Method android/widget/TextView.setText:(Ljava/lang/CharSequence;)V
23: return
そして2番目のもの:
textView.setText(editText.getText().toString().trim().toLowerCase());
次の結果が得られます。
0: aload_0
1: getfield #7 // Field textView:Landroid/widget/TextView;
4: aload_0
5: getfield #4 // Field editText:Landroid/widget/EditText;
8: invokevirtual #8 // Method android/widget/EditText.getText:()Landroid/text/Editable;
11: invokevirtual #9 // Method java/lang/Object.toString:()Ljava/lang/String;
14: invokevirtual #10 // Method java/lang/String.trim:()Ljava/lang/String;
17: invokevirtual #11 // Method java/lang/String.toLowerCase:()Ljava/lang/String;
20: invokevirtual #12 // Method android/widget/TextView.setText:(Ljava/lang/CharSequence;)V
23: return
ご覧のとおり、私が正しく推測したように、それらは同一です。Java コンパイラは最初の例を最適化し、変数が役に立たないため完全に削除しました。
したがって、結論は、より読みやすいコードを使用する必要があるということです。