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

Tại sao Java không cho phép khởi tạo biến cuối cùng tĩnh trong một phương thức khởi tạo?

Nếu bạn khai báo một biến static và cuối cùng, bạn cần khởi tạo nó khi khai báo hoặc trong khối static. Nếu bạn cố gắng khởi tạo nó trong hàm tạo, trình biên dịch sẽ giả định rằng bạn đang cố gắng gán lại giá trị cho nó và tạo ra lỗi thời gian biên dịch -

Ví dụ

Lớp
class Data {
   static final int num;
   Data(int i) {
      num = i;
   }
}
public class ConstantsExample {
   public static void main(String args[]) {
      System.out.println("value of the constant: "+Data.num);
   }
}

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

ConstantsExample.java:4: error: cannot assign a value to final variable num
   num = i;
   ^
1 error

Để làm cho chương trình này hoạt động, bạn cần khởi tạo biến tĩnh cuối cùng trong một khối tĩnh dưới dạng -

Ví dụ

Lớp
class Data {
   static final int num;
   static {
      num = 1000;
   }
}
public class ConstantsExample {
   public static void main(String args[]) {
      System.out.println("value of the constant: "+Data.num);
   }
}

Đầu ra

Giá trị
value of the constant: 1000