Я бы не согласился, что он хорошо работает в C. Это сбивает с толку, даже если он компилируется.
Это также напечатает "привет" в C
int i = 0;
if (i == 4) // i == 4 is not true
cout << "hi";
if (i = 4) // i = 4 which is treated as true
cout << "hello";
Именно поэтому это не разрешено в Java. Вы должны написать
int i = 0;
if (i == 4) // false
System.out.println("hello");
Самая близкая к этому проблема - использование логического типа.
boolean b = false;
if (b = true)
System.out.println("hello");
Это компилируется, но почти наверняка является ошибкой.
Обычно используется одно место для чтения строк текста
BufferedrReader br =
String line;
// assigns and checks the value of readLine()
while((line = readLine()) != null) {
}