Давайте посмотрим этот простой код Java:Почему эта Java-программа требует 2! = 2 с вложенными ifs?
class A {
public static void main(String[] args) {
if (1 == 1)
if (2 == 2)
if (2 != 2) // <-- should end here and do nothing
System.out.println("2 != 2");
else
System.out.println("2 != 2");
else
System.out.println("1 != 1");
}
}
Как говорится в комментариях, он должен видеть 1==1
, то 2==2
, но наиболее вложенным условие 2!=2
выходит из строя, поэтому программа завершает работу без печати ничего. Но это не так, то вместо этого он говорит 2!=2
:
$ javac A.java && java A
2 != 2
Почему?
Любопытно, что он работает, как ожидалось в Python:
>>> if (1 == 1):
... if (2 == 2):
... if (2 != 2):
... print("2 != 2");
... else:
... print("2 != 2");
... else:
... print("1 != 1");
...
>>>