finally語句與return a++

finally與return a++

一、描述

當(dāng)我知道 return a++; 是先返回再+1的,但是突然想起如果用try/finally語句捕獲時(shí),突然發(fā)現(xiàn)有三種有趣的情況:

  1. return a++;
  2. return ++a;
  3. return a+1;
    分別在finally語句會(huì)有不同的輸出。

二、具體

代碼如下:

public class Test {
    public static void main(String[] args) {
        System.out.println("s:"+test(1));
    }
    static int test(int a){
        try {
            //依次修改此處
            return a++;
            //return ++a;
            //return a+1;
        }finally {
            System.out.println("f:"+a);
        }
    }
}

運(yùn)行結(jié)果依次如下

  1. return a++;
f:2
s:1
  1. return ++a;
f:2
s:2
  1. return a+1;
f:1
s:2

我們知道finally語句是在方法結(jié)束前運(yùn)行的,其實(shí)上述代碼反編譯字節(jié)碼之后會(huì)發(fā)現(xiàn):

import java.io.PrintStream;

public class Test
{

    public Test()
    {
    }

    public static void main(String args[])
    {
        System.out.println((new StringBuilder()).append("s:").append(test(1)).toString());
    }

    static int test(int a)
    {
        int i = a++;//主要改此處
        System.out.println((new StringBuilder()).append("f:").append(a).toString());
        return i;
        Exception exception;
        exception;
        System.out.println((new StringBuilder()).append("f:").append(a).toString());
        throw exception;
    }
}

原來其實(shí)return后面的表達(dá)式,編譯器會(huì)創(chuàng)建臨時(shí)變量,操作完成再返回。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,503評(píng)論 0 13
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,623評(píng)論 18 399
  • 一、Java 簡(jiǎn)介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)...
    子非魚_t_閱讀 4,538評(píng)論 1 44
  • 嫁的人是誰, 很重要, 因?yàn)樗麤Q定著你一輩子的生活狀態(tài)。 娶的人是誰, 更重要, 她很有可能決定著你一生的層次和高...
    寧?kù)o雪2017閱讀 307評(píng)論 0 1
  • 【敬畏】-【體驗(yàn)】-【持續(xù)】-【交給】-【顯現(xiàn)】 1、缺啥補(bǔ)啥,怕啥練啥 2、一切為我所用,所用為團(tuán)隊(duì)大家 3、我...
    cac47ec5e164閱讀 190評(píng)論 0 0

友情鏈接更多精彩內(nèi)容