パフォーマンスについて質問する場合は、常に測定する必要があります。しかし、いいえ、違いはありません。その上、それがあなたの唯一のパフォーマンス問題のあるコードであるなら、私はあなたを真剣にうらやましく思います。
コーディング標準について。入れ子が少ないほど、ほとんどの場合、読んで従うほうがよいでしょう。if
これは、特にそれらが関連しているため、両方を1つにまとめることが望ましいことを意味します。パターン
if (check_foo_for_null && compare_foo)
非常に一般的であるため、別のネストされたif
。
編集:それをバックアップするには:
私には2つの小さな方法があります:
static boolean x(String a) {
if (a != null && a.equals("Foo"))
return true;
else return false;
}
static boolean y(String a) {
if (a != null) {
if (a.equals("Foo")) {
return true;
} else return false;
} else return false;
}
次のコードを生成します。
static boolean x(java.lang.String);
Code:
0: aload_0
1: ifnull 15
4: aload_0
5: ldc #16 // String Foo
7: invokevirtual #21 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
10: ifeq 15
13: iconst_1
14: ireturn
15: iconst_0
16: ireturn
static boolean y(java.lang.String);
Code:
0: aload_0
1: ifnull 17
4: aload_0
5: ldc #16 // String Foo
7: invokevirtual #21 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
10: ifeq 15
13: iconst_1
14: ireturn
15: iconst_0
16: ireturn
17: iconst_0
18: ireturn
else
したがって、無関係なジャンプターゲットを除けば、コードは同じです。あなたも持っていない場合else
:
static boolean z(String a) {
if (a != null) {
if (a.equals("Foo"))
return true;
return false;
}
その場合、結果は実際には同じです。
static boolean z(java.lang.String);
Code:
0: aload_0
1: ifnull 15
4: aload_0
5: ldc #16 // String Foo
7: invokevirtual #21 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
10: ifeq 15
13: iconst_1
14: ireturn
15: iconst_0
16: ireturn