Java ++;我和我++;最后是{}
这是我的第一篇帖子,我知道类似的东西也被贴了出来。。。。但我在理解某些东西时遇到了问题。我知道++I和I的区别++Java ++;我和我++;最后是{},java,Java,这是我的第一篇帖子,我知道类似的东西也被贴了出来。。。。但我在理解某些东西时遇到了问题。我知道++I和I的区别++ ++i首先递增'i',然后返回'i'的值 i++递增“i”,并在递增之前返回值 我在工作面试中遇到了一个问题: “我的价值是什么?” 根据我上面写的,我认为应该是1。但在一些测试应用程序中检查后,我知道它是2。所以我的问题是:为什么 当我玩了一点并切换了++时,我和我++ int test(){ int i = 0; try { return ++i;
int test(){
int i = 0;
try {
return ++i;
} finally {
return i++;
}
}
在这种情况下,i的值与预期值一样为1。那么这是为什么呢?当始终执行的finally块包含return语句时,该方法返回finally块返回的任何内容 因此,在第一种情况下,try块中的
returni++
将i
增加到1,但不返回它,而最后一个块中的return++i
将i
增加到2,并返回增加的值(因为它是一个预增量运算符)
如果交换运算符,try块中的return++i
将增量i
为1,但不返回它,而finally块中的return i++
将增量i
为2,但返回该增量之前的值-1(因为它是增量后运算符)
换句话说,返回值不取决于try块是否包含
++i
或i++
。它只取决于finally块是包含++i
还是i++
正确。finally会覆盖try块
int test(){
int i = 0;
try {
return ++i;
} finally {
return i++;
}
}