java - 问题如图,为什么返回值是1
大家讲道理
大家讲道理 2017-04-18 09:56:11
0
7
314

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(7)
左手右手慢动作

http://m.blog.csdn.net/articl...

PHPzhong

그림과 같이 먼저
1에 finally이 없으면 return:
try 안의 내용을 먼저 실행하고 return한다는 점을 이해해야 합니다. 실행은 되지만 실제 return은 없습니다. 이때 go finally의 문이 실행된 후 return을 실행하여 위의 질문 x1:1처럼 return x++; 1인데 어차피 finally가 실행될 것이기 때문에 즉시 반환되지는 않지만 finally의 문이 먼저 실행된 다음 x3:3을 얻습니다. 그런데 의 핵심은 입니다. finally의 반환 없음, finally의 x에 대한 변경은 이전 반환의 값에 영향을 미치지 않습니다. 이전 반환이 나가는 것은 1이므로 x의 값이 나중에 최종적으로 변경된 다음 반환이 다시 실행되더라도 이전 1이 여전히 반환됩니다. 즉, 나가도 반품은 동일합니다
2. 드디어 반품이 있는 경우. :
try가 먼저 실행되고 return이 실행되지만 실제 return은 발생하지 않습니다. 이때 finally가 실행되고 return in finally가 실행되어 직접 반환됩니다.

채택되길 바랍니다.

阿神

코드 흐름
변수 선언x = 1
이때 return x++예외를 잡아서 x = 2을 실행했는데 x++의 값이 1인데 return의 액션이 실행되지 않았습니다
마침내 실행하고 x = 3하고 return 다시 돌아옵니다.

伊谢尔伦

먼저 예외를 던진 다음 x 값(1)을 먼저 반환하면 클래스의 x가 1씩 증가합니다. 저도 초보자입니다.

刘奇

x++ 연산자를 반환하고 왼쪽을 먼저 반환한 다음 x가 1씩 증가합니다. return ++x는 2를 반환해야 합니다

巴扎黑

++X라는 표현의 의미는 X 더하기 1이고, 표현의 값은 X 더하기 1입니다.

X++ 표현식의 의미는 X + 1이지만 표현식의 값은 여전히 ​​X입니다.

小葫芦

1. try catch finally에서 반환이 있는 경우 현재 값이 먼저 스택에 저장되지만 즉시 반환되지는 않으며, finally의 명령문은 항상 실행됩니다. 하지만 반환값은 스택에 미리 올려두었기 때문에 여전히 반환값은 1이다. try catch finally에 반환문을 넣으면 순차적으로 다른 실행 결과를 볼 수 있다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿