作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里发生了什么?这对我来说似乎很奇怪。
public int v0, v1 = v0++, v2;
最佳答案
它声明了所有三个实例成员(我知道它们是实例成员,因为您没有得到错误),就好像它们是单独声明的一样,并将其中一个显式初始化为 v0++< 的值
,这是 v0
在递增之前的值:
public int v0;
public int v1 = v0++;
public int v2;
你也可以这样想:
public int v0;
public int v1;
public int v2;
// (In a constructor)
v1 = v0++;
哪个有效:
public int v0 = 0;
public int v1 = 0;
public int v2 = 0;
// (In a constructor)
v1 = v0++;
创建实例后,变量将具有这些值:
v0: 1 Because it was incrementedv1: 0 Because it received the value of `v0` *prior* to the incrementv2: 0 Because that's the default value for `int` instance members
我说“实例成员”是因为如果这些是方法中的变量而不是类的实例成员,您会得到一个错误,提示您在初始化之前使用了 v0
。 (编辑:呃,嗯,然后是那个public
东西 -- doh!)
关于Java 语法 : Why does this variable declaration work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23952139/
我是一名优秀的程序员,十分优秀!