我是一名新的java用户。最近我了解到在java中,每个语句都以分号(;)结束,每个块都由一对ob花括号 - {}
分隔(如果我错了,请纠正我)。
但在许多地方我发现作家都在说if
陈述。所以我的问题是java中 statement
和 block
之间的区别是什么?
提前致谢。
答案 0 :(得分:5)
Java Language Specification正式定义了块和语句。简化它的说法:
;
。new ClassName();
,System.out.println();
,i++;
等。{ int i = 1; System.out.println(i); }
包围的声明和其他语句。某些语句是使用其他语句构建的。他们的定义不包括分号。如果子语句以分号结尾,则这些语句以分号结尾。 if
声明属于此类别。它构建为if ( expression ) statement
。因此,如果其中的 statement
部分有分号,则以分号结尾。如果它里面的 statement
碰巧是一个块(这是一种语句!),那么它以一个大括号结束:
if ( a == b )
System.out.println(a);
VS
if ( a == b ) {
System.out.println(a);
}
在第一种格式中,if
的子语句是表达式语句(方法调用是表达式语句,表达式语句以分号结尾)。
在第二种格式中,if
的子语句是一个块语句,它包含一个表达式语句。所以if
以块的大括号结束,而不是分号。
底线:声明由属于某些正式类别定义。其中一些以分号结尾,有些则没有。
答案 1 :(得分:1)
您的定义是正确的。 if
是一个声明,即使它不以分号结尾。
一般来说,如果程序构造产生一个值,那么它就是表达式,否则它就是语句。在Java中,与其他语言不同(Scala,Groovy,...)if
是语句而不是表达式。
答案 2 :(得分:1)
如果实际上两者都是典型的。
if语句本身就是一个控制流语句。如果语句被评估为true,则它将执行语句,或者在语句之后阻塞。换句话说,如果您只想执行一行代码,则不需要if之后的块。
所以,请原谅我的袖口java,你可以拥有以下任何一种:
if(someboolean)
DoSuff();
或者
if(someboolean) {
DoSuff();
}
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html
答案 3 :(得分:0)
声明是块的一部分。块包含以分号分隔的语句,但也是语句本身。在BNF:
statement := block | ...
block := '{' { block | (statement ';') } '}'