その理由は
if (x = 10) {
// ...
}
Java では許可されていません。これx = 10
は整数型の式であり、Java では if 条件のブール式のみが許可されます。C++ では、if 条件として整数を使用できます。これの大きな理由の 1 つは、C との互換性を維持するためです。C にはブール型がないため、if 条件では整数が完全に有効です。
Java が整数の as if 条件を許可しないのはなぜですか? これを行う非常に重要な理由の 1 つは、一般的なバグを止めることです。と書くのが一般的です。
if (x = 10)
本当の意味で
if (x == 10)
実際、これは非常に一般的であるため、多くの C/C++ プログラマーが次のように記述しています。
if (10 == x)
代わりに、偶発的な代入を書くのが難しくなります。
本当に課題を実行するつもりなら、いつでも書くことができます
x = 10;
// ...
は常に非ゼロであるためx = 10
、C++ バージョンは常に if に入ります。この方法では、表現力を実際に失うことはありませんが、バグを防ぐことができます。
また、あなたは書く
int x; //uninitalized variable which is null
if () {
// ...
}
と書くつもりだと思いますif (x)
が、それは的外れです。初期化されていない変数は、C、C++、または Java では null ではありません! Java では、初期化されていないローカルを使用することはできません (フィールドは自動的に初期化されます)。そのため、Java で初期化されていない変数を使用することはできません。C/C++ では、初期化されていない変数がnull になる場合がありますが、その保証はまったくありません。代わりに、初期化されていない変数の値は未定義であり、以前に実行されたコードがスタックに残っている可能性があります。 初期化されていない変数がnullであることに依存しないでください - それは絶対にあなたを噛むために戻ってきます.