Rumah > Java > javaTutorial > Mengapa Mengubah Suai Pembolehubah dalam Blok `akhirnya` Tidak Mempengaruhi Nilai Pulangan di Jawa?

Mengapa Mengubah Suai Pembolehubah dalam Blok `akhirnya` Tidak Mempengaruhi Nilai Pulangan di Jawa?

Susan Sarandon
Lepaskan: 2024-12-02 06:09:11
asal
502 orang telah melayarinya

Why Does Modifying a Variable in a `finally` Block Not Affect the Return Value in Java?

Mengapakah mengubah suai pembolehubah dalam blok akhirnya tidak menjejaskan nilai pulangan?

Di Jawa, secara amnya difahami bahawa blok akhirnya tidak boleh menjejaskan nilai pulangan kaedah. Walau bagaimanapun, ia mungkin mengelirukan mengapa ini berlaku, terutamanya apabila nilai pulangan diubah suai dalam blok akhirnya.

Pertimbangkan contoh berikut:

public class Test {

    private String s;

    public String foo() {
        try {
            s = "dev";
            return s;
        } 
        finally {
            s = "override variable s";
            System.out.println("Entry in finally Block");  
        }
    }

    public static void main(String[] xyz) {
        Test obj = new Test();
        System.out.println(obj.foo());
    }
}
Salin selepas log masuk

Output kod ini ialah :

Entry in finally Block
dev
Salin selepas log masuk

Mengapa s tidak ditindih dalam blok akhirnya, namun kawalan dicetak output?

Penjelasan

Blok cubaan dilengkapkan dengan pelaksanaan pernyataan pulangan. Nilai s pada masa penyata pulangan dilaksanakan ialah nilai yang dikembalikan oleh kaedah. Hakikat bahawa klausa akhirnya kemudian mengubah nilai s (selepas pernyataan pulangan selesai) tidak (pada ketika itu) mengubah nilai pulangan.

Dalam contoh di atas, pernyataan pulangan dalam blok cuba ditetapkan nilai pulangan kepada "dev". Blok akhirnya kemudian menetapkan s kepada "mengatasi pembolehubah s", tetapi perubahan ini berlaku selepas nilai pulangan telah ditetapkan. Oleh itu, nilai pulangan masih "dev".

Adalah penting untuk ambil perhatian bahawa tingkah laku ini hanya digunakan pada perubahan dalam nilai pembolehubah primitif atau objek tidak berubah. Jika s adalah rujukan kepada objek boleh ubah dan kandungan objek telah ditukar dalam blok akhirnya, maka perubahan tersebut akan dilihat dalam nilai yang dikembalikan.

Atas ialah kandungan terperinci Mengapa Mengubah Suai Pembolehubah dalam Blok `akhirnya` Tidak Mempengaruhi Nilai Pulangan di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan