ตัวแก้ไขขั้นสุดท้าย:
ตัวแปรสมาชิกที่แก้ไขขั้นสุดท้ายต้องมีค่าเริ่มต้นระบุไว้อย่างชัดเจนโดยโปรแกรมเมอร์
ฟิลด์ของคลาส: ค่าเริ่มต้นจะต้องระบุในบล็อกการเริ่มต้นแบบคงที่หรือเมื่อประกาศฟิลด์
ฟิลด์อินสแตนซ์: ฟิลด์จะต้องประกาศในบล็อกการเริ่มต้นที่ไม่คงที่ หรือต้องระบุค่าเริ่มต้นในตัวสร้าง
ตัวแปรท้องถิ่นสุดท้าย: โปรแกรมเมอร์จะต้องเริ่มต้นอย่างชัดเจน
อะไรคือความแตกต่างระหว่างตัวแปรพื้นฐานที่แก้ไขขั้นสุดท้ายและตัวแปรประเภทอ้างอิง?
ตัวแปรพื้นฐานที่ถูกแก้ไขโดยขั้นสุดท้าย: ไม่สามารถกำหนดตัวแปรพื้นฐานใหม่ได้
ตัวแปรอ้างอิงที่แก้ไขขั้นสุดท้าย: รับประกันได้ว่าที่อยู่ที่อ้างอิงโดยประเภทการอ้างอิงนี้จะไม่เปลี่ยนแปลง กล่าวคือ อ้างอิงถึงออบเจ็กต์เดียวกันเสมอ แต่ออบเจ็กต์นี้สามารถเปลี่ยนแปลงได้ทั้งหมด
คัดลอกรหัสรหัสดังต่อไปนี้:
-
-
นำเข้า java.util.*;
ชั้นเรียนสาธารณะ Demo5
-
โมฆะสาธารณะคง main (String [] args)
-
สุดท้าย B b = B ใหม่ (22);
ข.ทดสอบ();
// เปลี่ยนค่าตามกฎหมาย แต่ยังคงชี้ไปที่ข้อมูลอ้างอิงเดียวกัน
b.setAge(20);
System.out.println(b.getAge());
// ผิดกฎหมาย
// ข = โมฆะ;
b.test2();
-
-
-
fianl แก้ไขตัวแปรสมาชิก
-
คลาส A
-
//ถูกต้องตามกฎหมาย
สุดท้าย int a = 10;
//ระบุค่าเริ่มต้นในตัวสร้างหรือบล็อกการเริ่มต้น
สตริงสุดท้าย str;
สุดท้าย int c;
สุดท้ายคงคู่ d;
-
str = "สวัสดี";
//ผิดกฎหมาย
// ก = 100;
-
คงที่
-
ง = 100;
-
// ตัวสร้างสามารถระบุค่าเริ่มต้นสำหรับฟิลด์ที่ไม่ได้ระบุในบล็อกการเริ่มต้น
สาธารณะA()
-
// ผิดกฎหมาย
//str = "ddd";
ค = 1,000;
-
สาธารณะ double changFinal()
-
// คุณไม่สามารถระบุค่าเริ่มต้นสำหรับขั้นสุดท้ายในวิธีปกติได้
// กลับ d = 1,000.90;
กลับ 0;
-
-
-
fianl แก้ไขวัตถุอาร์เรย์
-
คลาส B
-
อายุ int ส่วนตัว
สาธารณะB()
-
-
สาธารณะ B(int อายุ)
-
this.age = อายุ;
-
setAge โมฆะสาธารณะ (อายุ int)
-
this.age = อายุ;
-
สาธารณะ int getAge()
-
ส่งคืน this.age;
-
การทดสอบโมฆะสาธารณะ ()
-
int สุดท้าย [] arr = {23,434,56,898};
System.out.println(อาร์เรย์.toString(arr));
อาร์เรย์.sort(arr);
System.out.println(อาร์เรย์.toString(arr));
ถึง[2] = 200;
System.out.println(อาร์เรย์.toString(arr));
//การมอบหมายต่อ Arr ต่อไปนี้ถือเป็นการกระทำที่ผิดกฎหมาย
// arr = โมฆะ;
-
-
ทำความเข้าใจขั้นสุดท้ายให้ลึกซึ้งยิ่งขึ้น
-
โมฆะสาธารณะ test2()
-
String str1 = "อนาคตที่ดีกว่า";
//อ้างอิงโดยตรงกับ "อนาคตที่ดีกว่า" ในกลุ่มคงที่
สตริง str2 = "สวยงาม"+"อนาคต";
//จริง
System.out.println(str1 == str2);
สตริง s1 = "สวยงาม";
สตริง s2 = "อนาคต";
สตริง s3 = s1+s2;
//false s1 s2 เป็นเพียงตัวแปรที่ไม่สามารถระบุได้ในขณะคอมไพล์
//หากคุณต้องการทราบ ณ เวลาคอมไพล์ ให้ใช้สุดท้ายเพื่อแก้ไข s1 s2
System.out.println(str1 == s3);
-
-
พวกคุณรู้อะไรบางอย่างเกี่ยวกับตัวแก้ไขขั้นสุดท้ายใน Java หรือไม่ ฉันเชื่อว่ามีการอธิบายไว้อย่างชัดเจนในความคิดเห็น ดังนั้นฉันจะไม่ลงรายละเอียดที่นี่