Tôi gặp sự cố khi hiểu thứ tự khởi tạo xảy ra. đây là thứ tự tôi cho rằng:Thứ tự khởi tạo khối và định nghĩa biến và vv được thực thi theo thứ tự nào? (trong java)
*Once per
1. Static variable declaration
2. Static block
*Once per object
3. variable declaration
4. initialization block
5. constructor
nhưng theo mã này tôi rõ ràng là sai:
class SomethingWrongWithMe
{
{
b=0; //no. no error here.
int a = b; //Error: Cannot reference a field before it is defined.
}
int b = 0;
}
Và lỗi sẽ biến mất nếu tôi làm điều này:
class SomethingWrongWithMe
{
int b = 0;
{
b=0;
int a = b; //The error is gone.
}
}
tôi có thể không tìm ra lý do tại sao không có lỗi trên
b=0;
Trình biên dịch nào bạn đang sử dụng? Oracles javac? Hoặc một số IDE (ít nhất Eclipse mang trình biên dịch riêng của nó) –
Eclipse và Oracles javac hoạt động giống nhau trong kịch bản này. – aioobe
sử dụng nhật thực .. – Untitled