Video: LS. Hoàng Duy Hùng mới nhất - Bãi Tư Chính - Anh Dũng Trong Kiên Nhẫn và bài học 30 Vạn Viện Binh. 2025
Các nhà phát triển Java thường gặp những vấn đề tìm ra lý do tại sao một ứng dụng không hoạt động khi gặp vấn đề truy cập block. Nguyên tắc cơ bản là bất kỳ biến nào bạn tạo trong một khối chỉ được xác định trong khối đó. Ví dụ, khi bạn nhìn vào mã sau đây, bạn sẽ thấy một kịch bản truy cập khối điển hình.
// Tạo một biến bên trong một khối. for (int i = 0; i <10; i ++) // Hiển thị giá trị của biến đó. Hệ thống. ngoài. println ("Giá trị của i là:" + i); / / Truy cập bên ngoài khối không hoạt động. Hệ thống. ngoài. println ("Giá trị của i là:" + i);
Ví dụ hiển thị giá trị của i trong vòng lặp for (một loại khối) mà không có vấn đề. Tuy nhiên, cố gắng truy cập vào i bên ngoài khối là không thể chấp nhận được vì biến không được định nghĩa. Trình biên dịch sẽ bắt lỗi này.
Một vấn đề tiềm ẩn khác xảy ra khi một biến được định nghĩa trong ứng dụng và cũng trong một khối. Bởi vì tình huống này có thể gây ra vấn đề, các phiên bản mới hơn của Java sẽ không cho phép phân loại mã được hiển thị ở đây:
public static void main (String [] args) {// Xác định một biến. int i = 0; / / Tạo một biến bên trong một khối. for (int i = 0; i <10; i ++) // Hiển thị giá trị của biến đó. Hệ thống. ngoài. println ("Giá trị của i là:" + i); / / Truy cập bên ngoài khối không hoạt động. Hệ thống. ngoài. println ("Giá trị của i là:" + i);}
Trình biên dịch sẽ không phải lúc nào cũng ngăn bạn tự bắn vào chân. Trong nhiều trường hợp, nhà phát triển thực hiện điều gì đó với biến và không hiểu hậu quả. Ví dụ, mã sau là hoàn toàn hợp pháp trong Java.
public static void main (String [] args) {// Xác định một biến. int i = 0; / / Tạo một biến bên trong một khối. for (i = 0; i <10; i ++) // Hiển thị giá trị của biến đó. Hệ thống. ngoài. println ("Giá trị của i là:" + i); / / Truy cập bên ngoài khối không hoạt động. Hệ thống. ngoài. println ("Giá trị của i là:" + i);}
Vòng lặp for hiển thị các giá trị từ 0 đến 9 vì điều kiện trong khai báo vòng lặp. Cuộc gọi cuối cùng đến Hệ thống. ngoài. println () hiển thị giá trị 10, không phải 0 hoặc 9 như một số nhà phát triển có thể mong đợi.
Phần i + + của khai báo xảy ra, và sau đó điều kiện được đánh giá, vì vậy giá trị cuối cùng của i là 10, không phải 9 vì nó phải là 10 để điều kiện trở thành sai.
Vấn đề là bạn phải xem xét làm thế nào một khối làm việc với một biến để xác định xem bạn có thể truy cập vào biến và giá trị sẽ chứa trên lối ra từ khối.