Tôi thích sử dụng vòng lặp while , nhưng biểu thức null cho phép bạn viết điều này:
for (;;) { thread.run(); }
Tuy nhiên, một tuyên bố null cho phép bạn viết điều này:
while(true);
{
thread.run();
}
Mục đích chính của nó là để lãng phí thời gian của lập trình viên bảo trì kém, người đến sau bạn và tự hỏi tại sao luồng không chạy. Một tuyên bố phải theo sau một thời gian. Một mình ; là một tuyên bố. Vì vậy, khối lệnh này không thực sự là một phần của vòng lặp.
Điều đó không có nghĩa là không sử dụng tốt. Chúng chỉ là hiếm. Chúng thường trông như thế này:
{
;
}
Bởi vì cách này có vẻ giống như bạn muốn làm điều đó (thậm chí điều này đôi khi không đủ).
Trong hội đồng, câu lệnh null này được gọi là NOP . Trong Python, nó được gọi là pass . Trong java (và những đứa trẻ khác của c), đó là một dấu chấm phẩy như bạn đã nói, hoặc thậm chí khẳng định là đúng;
Tôi biết một vài cách sử dụng:
Ngữ nghĩa .
Có một sự khác biệt giữa một không gian trống và đặt số 0 xuống làm câu trả lời. Nó nói rõ ràng, không, tôi không quên đặt một cái gì đó ở đây. Điều này không có nghĩa là không có gì. Nó không có gì rõ ràng. Mục này bỏ trống. Đây là cách chúng tôi nhận được N / A để biên dịch.
Mẫu null
Hãy tưởng tượng một cỗ máy báo hiệu ánh sáng phức tạp và đắt tiền liên tục nhặt một bóng đèn màu từ băng chuyền, vặn nó vào một ổ cắm, bật nguồn, tháo nó ra và nhặt cái tiếp theo. Bạn có thể kiểm soát những gì điều này báo hiệu bằng màu sắc của bóng đèn bạn đặt trên thắt lưng. Tuyệt vời, giờ đây cuối cùng nó cũng hoạt động hoàn hảo, sếp của bạn muốn bạn tạo ra một cách để kiểm soát thời gian của các tín hiệu này. Anh ấy muốn thêm một khoảng cách giữa các tin nhắn. Bạn nhớ với nỗi kinh hoàng rằng nhiều bộ phận quan tâm đến thời gian của các tín hiệu này và thật đau đớn khi khiến chúng đồng bộ. Làm thế nào bạn sẽ kiểm soát thời gian mà không có điều này giữ bạn làm việc vào cuối tuần? Bạn nhìn qua một thùng bóng đèn bị cháy và nhận được một ý tưởng sáng chói, không theo nghĩa đen.
Đôi khi bạn muốn sử dụng đa hình để chỉ tắt một cái gì đó mà không phá vỡ bất cứ điều gì.
Gỡ lỗi
Khi bạn đặt một điểm dừng, bạn cần có một điểm cho điểm dừng đó. Bây giờ chắc chắn một số trình gỡ lỗi sẽ cho phép bạn đặt nó trên nẹp xoăn đóng nhưng nếu chúng không hay thì ngôn ngữ cho phép bạn buộc có một nơi để đặt ngay cả khi nơi đó không làm gì cả.
Không thực sự là một điều java nhưng cũng có:
Nhiễu nhị phân
Hướng dẫn lắp ráp NOP cho phép đấu tranh với tệp thực thi nhị phân được biên dịch. Nhưng các trình biên dịch java hiện đại tối ưu hóa quá nhiều. Tôi không chắc dấu chấm phẩy không chỉ gặp sự cố. Nhưng vào thời xưa, chúng ta cũng đã sử dụng những điểm trống này trong tệp thực thi để kiểm soát thời gian hoặc cho phép chúng ta thả vào một cái móc sau đó. Nếu không có NOP thì sẽ có hướng dẫn thực tế ở đó, vì vậy nếu bạn muốn hook, bạn phải sao chép các hướng dẫn đó ở nơi khác để nhường chỗ cho hook. Điều này cũng hoạt động tốt trong ngôn ngữ c mà Java nhận được nhiều cú pháp của nó. Nhưng tôi không nghĩ rằng vấn đề móc nối này xảy ra nhiều trong Java. Chúng tôi sử dụng lập trình hướng đối tượng để làm điều đó.