1. Biến cục bộ

Hãy nói chuyện nghiêm túc hơn về các biến. Nhưng lần này chúng ta sẽ không thảo luận về cấu trúc bên trong của chúng. Thay vào đó, chúng tôi sẽ tập trung vào cách các biến tương tác với mã nơi chúng được đặt.

Tất cả các biến được khai báo bên trong các phương thức được gọi là biến cục bộ . Một biến cục bộ chỉ tồn tại trong khối mã mà nó được khai báo. Hay nói chính xác hơn, nó tồn tại từ thời điểm nó được khai báo cho đến khi kết thúc khối mã mà nó được khai báo.

Để đơn giản, hãy xem xét một ví dụ:

Mã số khả năng hiển thị thay đổi
public static void main(String[] args)
{
   int a = 5;
   if (a < 10)
   {
     int b = 10;
     while (true)
     {
       int x = a + b;
       System.out.println(x);
     }
     System.out.println(b);
   }

}


a
a
a
a, b
a, b
a, b
a, b, x
a, b, x
a, b
a, b
a
a

Hãy nói về việc truy cập các biến cục bộ một lần nữa. Đây là một khối mã bao gồm các dấu ngoặc nhọn: đây có thể là phần thân của phương thức, phần thân của vòng lặp hoặc chỉ là một khối mã cho câu lệnh điều kiện. Một biến được khai báo trong một khối mã tồn tại cho đến hết khối mã đó.

Nếu một biến được khai báo trong phần thân của vòng lặp, thì nó sẽ chỉ tồn tại trong phần thân của vòng lặp. Nó được tạo và hủy ở mỗi lần lặp của vòng lặp.

Bạn không thể khai báo hai biến cục bộ có cùng tên trong một phương thức — chương trình sẽ không biên dịch được. Nhưng bạn có thể làm điều này nếu các khối mã mà các biến được khai báo không chồng lên nhau.

Ví dụ:

Mã số khả năng hiển thị thay đổi
public static void main(String[] args)
{
   int a = 5;
   if (a < 10)
   {
     int b = 10;
     System.out.println(b);
   }

   if (a < 20)
   {
     int b = 20;
     System.out.println(b);
   }
}


a
a
a
a, b
a, b
a
a
a
a
a, b
a, b
a

Chúng tôi chỉ có thể khai báo một biến cục bộ thứ hai được đặt tên b vì biến thứ nhất b không hiển thị trong khối mã nơi bbiến thứ hai được khai báo.


2. Thông số

Như chúng ta đã nói trước đây, mỗi phương thức có thể có các biến mà chúng ta gọi là tham số. Điều gì về khả năng hiển thị và tuổi thọ của họ?

Tất cả đều đơn giản. Các tham số được tạo khi thực hiện các bước vào phương thức (tức là khi mã của phương thức bắt đầu thực thi). Chúng bị loại bỏ khi phương thức kết thúc. Chúng có thể nhìn thấy trong toàn bộ cơ thể của phương pháp.

Ví dụ:

Mã số khả năng hiển thị thay đổi
public static void main(String[] args)
{
   int a = 5;
   if (a < 10)
   {
     int b = 10;
     while (true)
     {
       int x = a + b;
       System.out.println(x);
     }
     System.out.println(b);
   }

}

args
args, a
args, a
args, a
args, a, b
args, a, b
args, a, b
args, a, b, x
args, a, b, x
args, a, b
args, a, b
args, a
args, a

Như chúng ta đã nói trước đó, argschỉ là một biến có kiểu là một chuỗi các chuỗi. Và giống như tất cả các tham số, nó có sẵn ở mọi nơi trong phần thân của phương thức. Điều đó nói rằng, chúng tôi thường bỏ qua nó trong các ví dụ của chúng tôi.



3. Các biến trong một lớp

Bạn sẽ nhớ lại từ các bài học ở Cấp độ 1 rằng một lớp có thể có các phương thức và biến. Các phương thức đôi khi được gọi là các phương thức thể hiện và các biến - các biến thể hiện hoặc các trường. Đây thực sự là những từ đồng nghĩa trong Java.

Các biến (hoặc trường) của một lớp là gì?

Chúng là các biến được khai báo không phải trong một phương thức, mà trong một lớp.

Chúng có thể được truy cập từ bất kỳ phương thức (không tĩnh) nào của một lớp. Nói một cách đại khái, các biến thể hiện là các biến được chia sẻ bởi tất cả các phương thức của một lớp.

Ví dụ:

Mã số khả năng hiển thị thay đổi
public class Solution
{
   public int count = 0;
   public int sum = 0;

   public void add(int data)
   {
     sum = sum + data;
     count++;
   }

   public void remove(int data)
   {
     sum = sum - data;
     count--;
   }
}


count
count, sum
count, sum
count, sum
count, sum, data
count, sum, data
count, sum, data
count, sum
count, sum
count, sum
count, sum, data
count, sum, data
count, sum, data
count, sum
count, sum

Trong ví dụ này, chúng ta có hai phương thức — add()remove(). Phương add()thức tăng các biến thể hiện sumcountremove()phương thức giảm các biến thể hiện sum và count. Cả hai phương pháp đều hoạt động trên các biến thể hiện được chia sẻ.

Các biến cục bộ tồn tại trong khi một phương thức đang thực thi. Các biến thể hiện của một lớp tồn tại trong một đối tượng của một lớp miễn là đối tượng đó tồn tại. Bạn sẽ tìm hiểu chi tiết về các đối tượng của một lớp ở cấp độ tiếp theo.


4. Biến tĩnh

Giống như các phương thức, các biến trong một lớp có thể là tĩnh hoặc không tĩnh. Các phương thức tĩnh chỉ có thể truy cập các biến tĩnh.

Ở Cấp độ 11, chúng ta sẽ phân tích cấu trúc của các biến và phương thức tĩnh và bạn sẽ hiểu lý do của những hạn chế này.

Để tạo một biến tĩnh (biến lớp), bạn phải viết statictừ khóa trong phần khai báo của nó.

Các biến tĩnh không bị ràng buộc với một đối tượng hoặc thể hiện của lớp mà chúng được khai báo. Thay vào đó, chúng thuộc về chính lớp đó. Đó là lý do tại sao chúng tồn tại ngay cả khi không một đối tượng nào của lớp được tạo ra . Bạn có thể tham khảo chúng từ các lớp khác bằng cách sử dụng cấu trúc như:

ClassName.variableName

Ví dụ:

Mã số khả năng hiển thị thay đổi
public class Solution
{
   public void add(int data)
   {
     Storage.sum = Storage.sum + data;
     Storage.count++;
   }

   public void remove(int data)
   {
     Storage.sum = Storage.sum - data;
     Storage.count--;
   }
}

public class Storage
{
   public static int count = 0;
   public static int sum = 0;
}

Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum



Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum

Trong ví dụ trên, chúng tôi đã tạo một Storagelớp riêng biệt, di chuyển các biến count và sum vào đó và khai báo chúng là tĩnh . Các biến tĩnh công khai có thể được truy cập từ bất kỳ phương thức nào trong chương trình (và không chỉ từ một phương thức).