Trong khi nghiên cứu another question, tôi rất ngạc nhiên khi phát hiện ra rằng các mã Java sau biên dịch không có lỗi:Sử dụng this.var trong quá trình khởi var của
public class Clazz {
int var = this.var + 1;
}
Trong JDK6 tôi, var
được khởi tạo 1
.
Mã trên có ngữ nghĩa được xác định rõ ràng hay hành vi của nó không xác định? Nếu bạn nói nó được xác định rõ, vui lòng trích dẫn các phần có liên quan của JLS.
Có gì sai ở đây? –
@Sudhanshu: 'var' đang được sử dụng để khởi tạo' var'. – NPE
Đầu tiên, this.var = 0, sau đó bạn thêm nó 1, sau đó nó sẽ trở thành 1 –