× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Các biến trong Java - Tìm hiểu về các loại biến trong Java (Phần 2)

06/04/2021 02:48

Trong bài viết tiếp theo này, chúng ta sẽ tìm hiểu về các loại biến Java cùng với một số ví dụ sẽ giúp bạn viết chương trình của mình một cách dễ dàng.

Các loại biến trong Java

Java cho phép các biến được khai báo ở bất kỳ đâu hoặc trong bất kỳ khối nào. Tức là, trong Java, chúng ta có thể khai báo các biến ở nhiều nơi, chúng ta có thể khai báo chúng khi bắt đầu chương trình hoặc bên trong bất kỳ lớp , phương thức / hàm nào hoặc bên trong phương thức chính.

 Phạm vi xác định biến nào hiển thị cho các phần khác của chương trình của bạn và cũng là thời gian tồn tại của các biến đó. Tùy thuộc vào phạm vi, khả năng hiển thị và quyền truy cập vào các biến, chúng có thể được phân loại thành 3 loại.

3 loại biến trong Java là:

  1. Biến cục bộ
  2. Biến instance
  3. Biến tĩnh

Các loại biến trong Java

Các loại biến trong Java

Biến cục bộ trong Java

Định nghĩa biến cục bộ trong Java

Biến cục bộ trong Java là một biến mà chúng ta khai báo bên trong phần thân của một phương thức, khối hoặc một phương thức khởi tạo. Chúng ta chỉ có thể sử dụng biến cục bộ trong phương thức đó và các phương thức khác của lớp không biết về sự tồn tại của biến này. Một khối bắt đầu bằng dấu ngoặc nhọn mở và kết thúc bằng dấu ngoặc nhọn đóng. 

Phạm vi biến cục bộ

Phạm vi của một biến cục bộ được giới hạn trong một khối cụ thể. Thời gian tồn tại của nó nằm trong dấu ngoặc đơn mà nó được khai báo. Có nghĩa là, nó được tạo ra khi một hàm được gọi hoặc một khối được nhập và bị phá hủy khi nó thoát khỏi phương thức, khối hoặc hàm tạo đó.

Một số lưu ý về biến cục bộ

  • Không thể định nghĩa các biến cục bộ là biến tĩnh. Có thể sử dụng từ khóa “final” trước một biến cục bộ
  • Phạm vi và quyền truy cập của các biến này chỉ tồn tại bên trong khối mà chúng ta khai báo chúng.
  • Không thể sử dụng các công cụ sửa đổi quyền truy cập cho các biến cục bộ 
  • Khởi tạo biến cục bộ là cần thiết - không có giá trị mặc định cho biến cục bộ, vì vậy chúng ta nên khai báo một biến cục bộ và gán chốn một giá trị ban đầu trước khi sử dụng lần đầu.

Khai báo biến cục bộ trong Java

Mọi biến cục bộ được khai báo trong một khối {}. Chúng ta cũng có thể khai báo các biến cục bộ trong tiêu đề của câu lệnh “for”, ví dụ như sau:

 for(int i = 10 ;i >= 1; i--)

        {

                  // Body of for loop

        }

Trong ví dụ trên, int i =10 là khai biến của biến cục bộ i. Phạm vi của nó chỉ giới hạn trong vòng lặp for.

Cú pháp của biến cục bộ:

class ClassName
{
       methodName(){
             <DataType> localVariableName;
             localVariableName = value;
             }
}

Ở đây, methodname là tên phương thức, DataType đề cập đến kiểu dữ liệu của các biến cục bộ nhưu int, float, long, double,... LocalVariableName là tên của biến cục bộ và value là giá trị ban đầu của biến cục bộ. Ví dụ:

class ClassName

{

       methodName(){

             <DataType> localVariableName;

             localVariableName = value;

             }

}
double area()

    {

     int length=10; //local variable

     int breadth = 5; //local variable

     double areaOfRectangle = length * breadth; //local variable

     return areaOfRectangle;

    } // scope of all local variables ends here.

 

Code Snippet 1:

public class EmployeeSalary
{
  public void getSalary()
  {
      long salary = 30000; //declaring a local variable
  }
  public static void main(String args[])
  {
      System.out.println("Salary of the Employee is: " +salary);
  }
}

Output

Exception in thread “main” java.lang.Error: Unresolved compilation problem:

salary cannot be resolved to a variable

at EmployeeSalary.main(EmployeeSalary.java:10)

Lý do gây lỗi: Việc truy cập biến cục bộ “salary” bên ngoài phạm vi của nó (hàm getSalary()) gây ra lỗi.

Code Snippet 2:

public class EmployeeSalary

{

  public void getSalary()

  {

    //declaring a local variable

    long salary;

    //declaring and initializing local variables

    int workingDaysInAMonth = 25, salaryPerDay = 1000; salary = workingDaysInAMonth * salaryPerDay ;

    System.out.println("Salary of the Employee is: " +salary);

  }

  public static void main(String args[])

  {

      EmployeeSalary employee = new EmployeeSalary();

      //accessing local variable by calling method in which it is present

      employee.getSalary();

  }

}

Output

Salary of the Employee is: 25000

>>> Đọc thêm: Các biến trong Java (Phần 1)

Biến thể hiện (Instance) trong Java

Định nghĩa biến Instance trong Java

Một biến được khai báo bên trong lớp nhưng bên ngoài bất kì phương thức, phương thức khởi tạo hoặc thân khối nào được gọi là biến thể hiện. Một biến thể hiện là một biến không tĩnh, chúng ta không thể khai báo nó là biến tĩnh. Nó được gọi là biến cá thể vì giá trị của nó là cá thể cụ thể (liên quan đến các đối tượng) và không được chia sẻ với các cá thể / đối tượng khác vì mỗi đối tượng của lớp có bộ giá trị riêng cho các biến không tĩnh này.

Lưu ý về biến Instance

  • Khi chúng ta khai báo một biến instance trong một lớp, các biến này được tạo khi một đối tượng của lớp được tạo bằng cách sử dụng từ khóa “new” và bị hủy khi đối tượng bị hủy.
  • Chúng ta có thể truy cập các biến instance chỉ khi tạo ra các đối tượng, bên cạnh đó, chúng ta có thể sử dụng những biến này bằng cashc dùng con trỏ “this” trong cùng một lớp.
  • Chúng ta cũng có thể khai báo biến instance với các chỉ định truy cập (private. public, default). Nếu chúng ta không đặt rõ ràng bất kỳ mã xác định truy cập nào cho các biến cá thể thì Java sẽ giả định là mã xác định truy cập mặc định.
  • Phân bổ đóng được sử dụng để lưu trữ các biến cá thể và một vùng bộ nhớ được tạo cho mỗi giá trị biến cá thể. Mỗi đối tượng có bản sao riêng của các biến thể hiện, các biến này không thể được chia sẻ giữa các đối tượng.
  • Các biến thể hiện có thể nhìn thấy đối với tất cả các phương thức, hàm tạo và khối trong lớp. Thông thường, chúng tôi khuyến nghị bạn nên khai báo cá thể với một chỉ định truy cập "riêng tư".

>>> Tham khảo: Khóa học lập trình Java web Full-stack

Khai báo một biến instance

Chúng ta có thể khai báo các biến instance bên trong một lớp. Chúng ta cũng có thể khai báo chúng bên ngoài một phương thức, khối hoặc phương thức khởi tạo.

Cú pháp của biến instance

class ClassName

{

       <DataType> instanceVariableName;

       instanceVariableName = value;

       // class body

}

Ví dụ:

Class AreaofShapes

{

  //These are instance variables, present inside the class

       double rectangleArea;

       double squareArea;

       double circleArea;

}

Code Snippet

public class AreaOfShapes

{

  //Declaring instance variables

  double breadth;

  double length;

  double areaOfRectangle;

  double areaOfSquare;

  public static void main(String args[])

  {

      //Creating First Object area1

      AreaOfShapes area1 = new AreaOfShapes();

      //Accessing instance variables through the first object

      area1.length = 50;

      area1.breadth = 25;

      area1.areaOfRectangle= area1.length * area1.breadth;

      //Displaying details for first object

      System.out.println("Details from the first object-");

      System.out.println("Length of Rectangle: " +area1.length);

      System.out.println("Breadth of Rectangle: " +area1.breadth);

      System.out.println("Area of Rectangle: " +area1.areaOfRectangle);

      //Creating second Object area2

      AreaOfShapes area2 = new AreaOfShapes();

      //Accessing instance variables through the second object

      area2.length = 75.5;

      area2.breadth = 68;

      area2.areaOfRectangle= area2.length * area2.breadth;

      //Displaying details for the second object

      System.out.println("\nDetails from the second object-");

      System.out.println("Length of Rectangle: " +area2.length);

      System.out.println("Breadth of Rectangle: " +area2.breadth);

      System.out.println("Area of Rectangle: " +area2.areaOfRectangle);

  }

}

Output

Details from the first object-

Length of Rectangle: 50.0

Breadth of Rectangle: 25.0

Area of Rectangle: 1250.0

Details from the second object-

Length of Rectangle: 75.5

Breadth of Rectangle: 68.0

Area of Rectangle: 5134.0

Biến tĩnh trong Java

Khái niệm biến tĩnh trong Java

Một biến được khai báo bên trong một lớp nhưng không nằm trong phương thức, hàm tạo hoặc một khối, với từ khóa static được gọi biến static hoặc class. Biến tĩnh còn được gọi là biến class vì chúng được liên kết với lớp và chung cho tất cả các thể hiện của lớp. 

Ví dụ về biến tĩnh trong Java

Ví dụ: Nếu chúng ta tạo nhiều đối tượng của một lớp. Ví dụ: nếu ta tạo nhiều đối tượng của một lớp và truy cập vào biến tĩnh bằng cách sử dụng các đối tượng, thì điều đó sẽ là chung cho tất cả, tức là những thay đổi được thực hiện đối với biến bằng cách sử dụng một trong các đối tượng sẽ phản ánh khi chúng ta truy cập nó thông qua các đối tượng khác của lớp.

Lưu ý về biến tĩnh trong Java

  • Các biến tĩnh được tạo khi bắt đầu thực thi chương trình và tự động bị hủy sau khi thực thi chương trình.
  • Không giống như các biến thể hiện, chỉ có một bản sao của một biến tĩnh cho mỗi lớp, bất kể số lượng đối tượng mà chúng ta tạo ra từ lớp đó.
  • Việc khởi tạo các biến tĩnh là không bắt buộc. Nếu chúng ta không khởi tạo nó bằng một giá trị, nó sẽ nhận một giá trị mặc định tương tự như các biến cá thể.
  • Các biến static có thể được khai báo là public / private, final và static. Các biến này là các biến không đổi không bao giờ thay đổi so với giá trị ban đầu của chúng.
  • Cấp phát bộ nhớ tĩnh rất hữu ích để lưu trữ các biến static / class.
  • Chúng ta có thể truy cập các biến tĩnh bằng cách gọi nó với tên lớp, đó là ClassName.variableName . Chúng ta cũng có thể truy cập trực tiếp các biến tĩnh bên trong các phương thức tĩnh và các khối tĩnh.
  • Khả năng hiển thị của biến tĩnh tương tự như các biến cá thể. Tuy nhiên, chúng ta chủ yếu khai báo các biến tĩnh là công khai, vì chúng phải có sẵn cho tất cả các đối tượng của lớp.
  • Giá trị của các biến tĩnh cũng có thể được gán trong khi khai báo hoặc trong hàm tạo. Ngoài ra, chúng ta có thể gán các giá trị trong các khối khởi tạo tĩnh đặc biệt.

Kết luận: Các biến trong Java đóng một vai trò quan trọng trong lập trình. Chúng rất hữu ích cho việc viết chương trình. Trong bài viết này, chúng ta đã tìm hiểu rất kỹ về các biến trong Java và các kiểu biến cùng các ví dụ cụ thể. Hy vọng bạn đã có thể hiểu rõ về biến trong Java và cách làm việc với chúng. Tìm hiểu thêm về Java và các ngôn ngữ lập trình qua các khóa học lập trình tại T3H bạn nhé!