Kita tahu bahwa pernyataan pengembalian digunakan dalam metode tertentu. Satu digunakan untuk mengembalikan hasil eksekusi dari fungsi, dan yang lainnya digunakan dalam fungsi dengan nilai pengembalian jenis void. Itu hanya pernyataan pengembalian (pengembalian;). Pada saat ini, ini digunakan untuk mengakhiri eksekusi metode, yaitu pernyataan setelah pengembalian ini tidak akan dieksekusi. Tentu saja, dalam hal ini, tidak ada lagi pernyataan lain setelah pernyataan pengembalian.
Saya menemukan beberapa pertanyaan menggunakan pernyataan pengembalian dalam pernyataan try-catch-final
Kode 1:
static int intc () {int x = 0; coba {x = 1; return x;} akhirnya {x = 3; }} Kode 2: Tambahkan pernyataan pengembalian ke pernyataan Kode Akhirnya di atas
static int intc () {int x = 0; coba {x = 1; return x;} akhirnya {x = 3; return x;}}Kode Tiga:
static int intc () {int x = 0; coba {x = 1; return x;} akhirnya {x = 3; return 0;}} Jadi apa hasil eksekusi dari ketiga metode ini?
Kode 1: return 1;
Kode 2: return 3;
Kode 3: return 0;
Apa prinsipnya?
Alasannya adalah bahwa ketika mesin virtual Java menjalankan metode dengan nilai pengembalian, itu akan membuat area dalam daftar variabel lokal untuk menyimpan nilai pengembalian metode. Saat menjalankan pernyataan pengembalian, itu akan membaca nilai dari area ini untuk pengembalian.
Dalam kode 1, tetapkan 1 ke variabel x di try, lalu salin nilai variabel x ke area di mana nilai pengembalian disimpan. Akhirnya, toko nilai pengembalian toko 1, dan satu dikembalikan ketika pernyataan pengembalian dieksekusi.
Dalam Kode 2, 1 juga ditugaskan ke variabel X, dan kemudian nilai X disalin ke area di mana nilai pengembalian disimpan. Pada saat ini, nilai area di mana nilai pengembalian adalah 1, dan kemudian melompat ke pernyataan akhirnya. Pada saat ini, 3 ditugaskan ke variabel lokal X, dan kemudian salin nilai x ke area di mana nilai pengembalian disimpan, dan akhirnya menjalankan pernyataan pengembalian. Nilai di area yang dikembalikan adalah 3.
Dalam Kode Tiga, pernyataan yang dieksekusi dalam coba adalah sama. Setelah melompat ke pernyataan akhirnya, 3 ditugaskan ke variabel lokal, maka 0 ditugaskan ke area di mana nilai pengembalian disimpan, dan akhirnya pernyataan pengembalian dieksekusi. Nilai di area yang dikembalikan dibaca adalah 0, jadi 0 dikembalikan.