ใน Java เมื่อพยายามและในที่สุดก็มีคำสั่งส่งคืนสถานการณ์การดำเนินการคืออะไร? ตอนนี้เรามาอธิบายด้วยตัวอย่างต่อไปนี้:
กรณีแรก: การลองมีคำสั่ง Return และในที่สุดก็ไม่มี
Testry ระดับสาธารณะ {สตริงคงที่ s = ""; {System.out.println ("ลอง ...... ");ที่นี่เรากำหนดสตริง s, กำหนด "a" เพื่อลองและส่งคืนโดยตรงและกำหนด "b" ให้กับ s ในที่สุด ด้านล่างเป็นผลลัพธ์ของการดำเนินการ
ลอง ..... 17 b 8 a
เราพบว่าผลลัพธ์สุดท้ายคือ A แต่ B ถูกพิมพ์ออกมาโดยมีลำดับความสำคัญมากกว่า ผ่านการดีบักการดีบักทีละขั้นตอนเราพบว่าก่อนที่จะเรียกใช้ผลตอบแทนในการลองรหัสในที่สุดจะถูกดำเนินการและจากนั้นคำสั่งคืนจะถูกดำเนินการ หากมีการรวมคำสั่งคืนค่าในที่สุดจะเกิดอะไรขึ้น?
กรณีที่สอง: ลองและในที่สุดก็มีคำสั่งส่งคืน
Testry ระดับสาธารณะ {สตริงคงที่ s = ""; {System.out.println ("ลอง ...... ");ผลลัพธ์แบบไหนจะเกิดขึ้นถ้า S = "B"; สตริง S A หรือ B?
ลอง ..... 8 B
เราพบว่าผลการพิมพ์สุดท้ายคือ b
เรารู้ว่าคำสั่ง Return ถูกใช้ในวิธีการหนึ่ง ซึ่งใช้เพื่อยุติวิธีการในเวลานี้
public int print () {int c = 1; (ข้อยกเว้น) {E.PrintStackTrace (); c;ผลลัพธ์ของการดำเนินการโปรแกรมคือ:
วิ่ง:
ลองดำเนินการ ...
ในที่สุดก็ดำเนินการ ...
3
สร้างสำเร็จ (เวลาทั้งหมด: 0 วินาที)
โปรดทราบว่าสามารถมีคำสั่งคืนหนึ่งที่ตำแหน่ง 2 และ 3 และจะต้องมีคำสั่งคืนหนึ่งใน 2, 3 และ 4 ถ้า 2 ถูกดำเนินการวิธีการจะสิ้นสุดและคำสั่งที่ 3 ไม่สามารถดำเนินการได้
เมื่อบล็อกคำสั่งลองถูกดำเนินการที่ 1 ค่าส่งคืนของฟังก์ชั่นจะถูกเก็บไว้ในตัวแปรชั่วคราวอื่น (ตัวแปรที่แตกต่างกันจาก C ค่าของมันคือ 102) บล็อกคำสั่งอื่นจะพบที่ 2 และค่าส่งคืนจะถูกเก็บไว้ในตัวแปรชั่วคราว (ค่าคือ 3)
public int print () {int c = 1; -1} ในที่สุด {C ++;ในรหัสข้างต้นไม่มีคำสั่ง Return ในบล็อกคำสั่งสุดท้าย
Run: Tryfinally102 สร้างสำเร็จ (เวลารวม: 0 วินาที)
สรุป: 1. ไม่ว่าจะมีคำสั่งคืนในการลองหรือไม่คำสั่งสุดท้ายจะถูกดำเนินการอย่างแน่นอน (ในที่สุดก็เป็นชื่อที่ดี)
2. หากไม่มีคำสั่ง Return ในที่สุดและมีการกลับมาลองแล้วก่อนที่จะดำเนินการคำสั่ง Return ในการลองรหัสในที่สุดจะถูกดำเนินการก่อนแล้ว รวมอยู่ในที่สุดมันจะกลับมาโดยตรงและไม่เรียกใช้คำสั่งคืนกลับในการลองอีกต่อไป