栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java:不是声明

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java:不是声明

Java限制了所谓的“表达式语句”中允许的表达式类型。仅允许具有潜在副作用的有意义的表达式。它不允许在语义上无意义的语句,例如

0;
a +b;
。它们只是从语言语法中排除。

像这样的函数调用

foo()
可以而且通常确实具有副作用,因此它不是毫无意义的声明。编译器不会深入检查主体
foo()
以检查其是否实际执行了任何操作。调用函数
可能 会有副作用,因此在语法上是有效的。

这反映了C / C ++与Java之间的哲学差异。Java禁止使用各种构造,这些构造会导致代码无效或毫无意义。

return;foo();    // unreachable statement

C和C ++在这方面相对宽松。随便写 他们没有时间照顾你。


引用Java语言规范§14.8表达式语句:

某些类型的表达式可以在其后加上分号来用作语句。

expressionStatement:    Statementexpression ;Statementexpression:    Assignment    PreIncrementexpression    PreDecrementexpression    PostIncrementexpression    PostDecrementexpression    MethodInvocation    ClassInstanceCreationexpression

通过评估表达式来执行表达式语句;如果表达式具有值,则将值丢弃。

当且仅当表达式的评估正常完成时,表达式语句的执行才能正常完成。

与C和C
++不同,Java编程语言仅允许将某些形式的表达式用作表达式语句。请注意,Java编程语言不允许“强制转换为void”(void不是类型),因此编写表达式语句的传统C技巧如下:

(void)... ;  // incorrect!

不起作用。另一方面,Java编程语言允许在expressions语句中使用所有最有用的类型的表达式,并且它不需要用作表达式语句的方法调用来调用void方法,因此几乎不需要这种技巧。如果需要技巧,则可以改用赋值语句(第15.26节)或局部变量声明(第14.4节)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/452834.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号