Computer >> Máy Tính >  >> Lập trình >> Java

Chúng ta có thể khởi tạo các biến tĩnh trong một phương thức khởi tạo mặc định trong Java không?

Các biến class / static thuộc về một lớp, giống như các biến thể hiện mà chúng được khai báo trong một lớp, bên ngoài bất kỳ phương thức nào, nhưng với từ khóa static.

Chúng có sẵn để truy cập tại thời điểm biên dịch, bạn có thể truy cập chúng trước / không cần khởi tạo lớp, chỉ có một bản sao của trường tĩnh có sẵn trong toàn lớp, tức là giá trị của trường tĩnh sẽ giống nhau trong tất cả các đối tượng. Bạn có thể xác định trường tĩnh bằng từ khóa tĩnh.

Nếu bạn khai báo một biến tĩnh trong một lớp, nếu bạn chưa khởi tạo nó, giống như với trình biên dịch biến cá thể, khởi tạo những biến này bằng các giá trị mặc định trong hàm tạo mặc định.

Có, bạn cũng có thể khởi tạo các giá trị này bằng cách sử dụng hàm tạo.

Ví dụ

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);
   }
}

Đầu ra

Krishna
25

Khai báo cuối cùng và tĩnh

Nhưng nếu bạn khai báo một biến thể hiện là static và trình biên dịch Java cuối cùng sẽ không khởi tạo nó trong phương thức khởi tạo mặc định, do đó, bắt buộc phải khởi tạo các biến tĩnh và biến cuối cùng. Nếu bạn không tạo ra lỗi thời gian biên dịch.

Ví dụ

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);
   }
}

Lỗi thời gian biên dịch

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

Tuy nhiên, nếu bạn cố gắng khởi tạo một biến được khai báo là final tĩnh , trình biên dịch coi nó như một nỗ lực để khởi tạo biến và lỗi thời gian biên dịch sẽ được tạo ra.

Ví dụ

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);
   }
}

Lỗi thời gian biên dịch

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