Вот здесь да, компилятор выскажет своё недовольство. В условии сначала присваивается переменной test значение, а затем только проверяется выражение. Так как там int, вместо boolean, такой код не скомпилируется.
- int test;
- if (test = 0) {
- // TODO: add code
- }
Здесь аналогичный случай, только этот код компилируется... В условии сначала переменной test присваивается значение false, а затем эта переменная проверяется на истинность. Так как это переменная логического типа (в отличии от примера выше), то этот код скомпилируется.
- boolean test;
- if (test = false) {
- // TODO: add code
- }
Кстати, я в NetBeans как-то включал настройку, чтобы он предупреждал меня о таких ошибках.