Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เราสามารถเริ่มต้นตัวแปรสแตติกในตัวสร้างเริ่มต้นใน Java ได้หรือไม่?


ตัวแปรคลาส/สแตติกเป็นของคลาส เช่นเดียวกับตัวแปรอินสแตนซ์ที่ประกาศภายในคลาส นอกเมธอดใดๆ แต่มีคีย์เวิร์ดสแตติก

สามารถเข้าถึงได้ในเวลาคอมไพล์ คุณสามารถเข้าถึงได้ก่อน/โดยไม่ต้องสร้างอินสแตนซ์ของคลาส มีฟิลด์สแตติกเพียงสำเนาเดียวที่พร้อมใช้งานทั่วทั้งคลาส นั่นคือ ค่าของฟิลด์สแตติกจะเท่ากันในทุกอ็อบเจ็กต์ คุณสามารถกำหนดฟิลด์สแตติกได้โดยใช้คีย์เวิร์ดสแตติก

หากคุณประกาศตัวแปรสแตติกในคลาส หากคุณยังไม่ได้เริ่มต้น คอมไพเลอร์ตัวแปรอินสแตนซ์จะเริ่มต้นสิ่งเหล่านี้ด้วยค่าเริ่มต้นในคอนสตรัคเตอร์เริ่มต้น

ได้ คุณยังสามารถเริ่มต้นค่าเหล่านี้ได้โดยใช้ตัวสร้าง

ตัวอย่าง

public class DefaultExample {
   static String name;
   static int age;
   DefaultExample() {
      name = "Krishna";
      age = 25;
   }
   public static void main(String args[]) {
      new DefaultExample();
      System.out.println(DefaultExample.name); System.out.println(DefaultExample.age);
   }
}

ผลลัพธ์

Krishna
25

ประกาศขั้นสุดท้ายและคงที่

แต่ถ้าคุณประกาศตัวแปรอินสแตนซ์สแตติกและคอมไพเลอร์ Java สุดท้ายจะไม่เริ่มต้นในคอนสตรัคเตอร์เริ่มต้น ดังนั้น จำเป็นต้องเริ่มต้นตัวแปรสแตติกและตัวแปรสุดท้าย ถ้าคุณไม่สร้างข้อผิดพลาดในการคอมไพล์

ตัวอย่าง

public class DefaultExample {
   static final String name;
   static final int age;
   public static void main(String args[]) {
      new DefaultExample();
      System.out.println(DefaultExample.name); System.out.println(DefaultExample.age);
   }
}

ข้อผิดพลาดในการคอมไพล์

DefaultExample.java:2: error: variable name not initialized in the default constructor
   static final String name;
            ^
DefaultExample.java:3: error: variable age not initialized in the default constructor
   static final int age;
^
2 errors

แต่ถ้าคุณพยายามที่จะเริ่มต้นตัวแปรที่ประกาศ สุดท้าย และ คงที่ คอมไพเลอร์ถือว่าเป็นความพยายามในการเริ่มต้นตัวแปรและจะเกิดข้อผิดพลาดในการคอมไพล์ขึ้น

ตัวอย่าง

public class DefaultExample {
   static final String name;
   static final int age;
   DefaultExample() {
      name = "Krishna";
      age = 25;
   }
   public static void main(String args[]) {
      new DefaultExample();
      System.out.println(DefaultExample.name);
      System.out.println(DefaultExample.age);
   }
}

ข้อผิดพลาดในการคอมไพล์

OutputDeviceAssignedDefaultExample.java:5: error: cannot assign a value to final variable name
   name = "Krishna";
   ^
DefaultExample.java:6: error: cannot assign a value to final variable age
   age = 25;
   ^
2 errors