if语句如果在JAVA中没有花括号,为什么if块可以放在另一个if块中
通常在JAVA中,如果if语句没有花括号,则在满足if条件时只能执行一行,但是如果初始if后面有另一个if块(内部if),则不会触发错误,并且会有更多行。这怎么可能
范例
if (true)
if (true)
System.out.println("true");
else
System.out.println("false");
你可以在下面搜索框中键入要查询的问题!
通常在JAVA中,如果if语句没有花括号,则在满足if条件时只能执行一行,但是如果初始if后面有另一个if块(内部if),则不会触发错误,并且会有更多行。这怎么可能
范例
if (true)
if (true)
System.out.println("true");
else
System.out.println("false");
# 1 楼答案
将此if语句视为:
如果第一个
IF
是true
,它会转到下一个语句,这里的下一个语句也是IF
,也是true
,因此它会执行其中的语句。如果假设为false,则搜索else
end执行else
中的语句。所以所有语句都被覆盖了,没有出现错误场景# 2 楼答案
更正。不带大括号的
if
语句只能有一个语句,在满足条件时执行。而if
的语法是这样的也就是说,如果有一个
else
,它就是if
的一部分。这都是一句话之所以没有错误,是因为这里没有歧义。(好吧,无论如何,对编译器来说都不是。)因为
else
是if
的一部分,所以它与最近的if
一起使用。因此,通过适当的缩进# 3 楼答案
没有错误,因为它等于
以及有效的语法
但是请始终使用
{}
,否则,很难理解if
块的确切结束位置# 4 楼答案
这是因为您的外部
if
块实际上包含一条语句如果内部
if
条件为true,则外部if
等价于:如果,内部
if
条件如果false
,它等价于:尽管如此,省略
if-else
周围的大括号或循环确实是个坏主意,尤其是在嵌套块中这样做,可能会带来麻烦。仅仅因为它可以做到,并不意味着你应该做到看看没有括号的嵌套的^ {CD1>}块会变得丑陋,并且经常导致错误,考虑这个代码,你认为输出应该是什么?