最终,{i}

时间:2018-10-10 08:06:57

标签: java

这是我的第一篇文章,我知道也有类似的文章发布。。。。我知道++ i和i ++的区别

  1. ++ i首先增加'i',然后返回值'i'
  2. i ++递增'i'并在递增之前返回值

我在求职面试中遇到一个问题: “我的价值是什么?”

int test(){
   int i = 0;
   try {
    return i++; 
   } finally {
    return ++i;
   }
}

根据我在上面写的内容,我认为应该为1。但是在某些测试应用中对其进行检查后,我知道它是2。所以我的问题是:为什么?

当我玩了一点并且用i ++切换了++ i

int test(){
   int i = 0;
   try {
    return ++i; 
   } finally {
    return i++;
   }
}

在这种情况下,i的值是预期的1。那为什么呢?

1 个答案:

答案 0 :(得分:0)

总是执行的finally块包含return语句时,该方法将返回finally块返回的内容。

因此,在第一种情况下,try块中的return i++递增i到1,但不返回,而final块中的return ++i递增{{1 }}到2,并返回该递增值(因为它是一个预递增运算符)。

如果交换运算符,则try块中的i递增return ++i到1,但不返回,而final块中的i递增{{1} }设为2,但返回该增量之前的值-1(因为它是后增量运算符)。

换句话说,返回的值不取决于try块包含return i++还是i。这仅取决于finally块包含++i还是i++