当前位置: 首页 > 面试题库 >

Java中的序列点

齐英韶
2023-03-14
问题内容

是否保证执行以下Java代码的顺序:

int i = getA() + getB();

getA()之前一直执行的getB(),因为任何一般人所期望的?


问题答案:

是的。在JLS中,第15.7节:

Java编程语言保证运算符的操作数似乎按特定的评估顺序(即从左到右)进行评估。

建议代码不要严格依赖此规范。当每个表达式最多包含一个副作用(作为其最外层的操作),并且当代码不完全依赖哪个表达式作为从左到右求值的结果时,代码通常会更清晰。

在评估右侧操作数的任何部分之前,似乎已对二进制运算符的左侧操作数进行了完全评估。

并且:

Java编程语言还保证在执行操作本身的任何部分之前,对运算符的每个操作数(条件运算符&&,||和?:除外)都应进行完全评估。



 类似资料:
  • 问题内容: 我是Java新手,具有CI的背景,正在研究Khalid Moughal的 书。在第126页上,他举了一个例子 显然,这违反了C的顺序点概念,即您不能在同一顺序点中多次更改变量的值。我的问题是在Java中是否适用相同的顺序点规则 ?可能他只是为了说明前缀一元运算符的概念及其副作用而举了这个例子,但是 在著名的Khalid Moughal 著作中,这样的例子显然违反了该语言的非常基本的规则

  • 问题内容: 我为无法快速找到答案感到困惑。我本质上是在寻找Java中的一种实现接口的数据结构,但该结构按顺序存储其成员。我知道您可以使用法线并在其上使用,但是我遇到的情况是,我偶尔会添加并经常从列表中检索成员,并且我不想每次检索成员时都对其进行排序,以防万一新增加了一个。谁能指出我在JDK甚至第3方库中都存在的这种东西? 编辑 :数据结构将需要保留重复项。 总结 :我发现所有这些都很有趣,并且学到

  • 问题内容: 是否可以在Java中对匿名类进行Seaalal / Deearialize? 例: 我的问题是我想执行一些自定义管理任务,因此我不需要为每个任务发布版本。所以我想做的是- 通过Groovy脚本引擎通过HTTP端点发布自定义任务,并将它们序列化为db以及时运行它们。 问题答案: 可能是危险的。匿名类的名称/数量由编译器生成,并基于它们在文件中出现的顺序。例如,如果您交换两个类的顺序,它们

  • 本文向大家介绍Java中的序列化是什么?,包括了Java中的序列化是什么?的使用技巧和注意事项,需要的朋友参考一下 Java提供了一种称为对象序列化的机制,该机制可以将对象表示为字节序列,其中包括对象的数据以及有关对象的类型和存储在对象中的数据类型的信息。 示例

  • 问题内容: 我只是想知道我如何序列化foo是我自己的制造类。 我是否需要做任何特别的事情,即首先定义自己的xml结构,然后对列表中的每个值调用toString并将其写出? 谁能给我指出一个好的教程?http://java.sun.com/products/jfc/tsc/articles/persistence4/多数民众赞成在我一直在看,但似乎没有提到如何处理非库类。 谢谢 问题答案: 如果您正