menu

VanThuong.Com

Blog học lập trình Java và SEO miễn phí.

Tìm hiểu các loại biến trong Java

Posted by on
Trong một bài viết trước thì chúng ta đã tìm hiểu qua biến là gì trong Java, tiếp theo trong bài viết này tôi và các bạn cùng tìm hiểu về các loại biến trong Java nhé. Nội dung trọng tâm của bài viết là làm sao để bạn có thể hiểu được tường tận cách khai báo, thao tác như thế nào, phạm vi sử dụng của các loại biến.
Tìm hiểu các loại biến trong Java
Biến được chúng ta khai báo bằng cách cung cấp tên tương ứng để dễ sử dụng và ghi nhớ chúng. Mỗi biến trong Java đều phải được khai báo với một kiểu dữ liệu nhất định, kiểu dữ liệu mà chúng ta khai báo cho biến sẽ xác định kích thước, cách tổ chức cho biến trong bộ nhớ, khoảng giá trị mà biến có thể nhận được và đồng thời xác định những phép toán có thể áp dụng được trên biến.

Biến phải được khai báo trước khi sử dụng và syntax của nó khá đơn giản như sau:
Syntax: <kiểu dữ liệu> <tên biến> [ = giá trị][, <tên biến> [= giá trị] ...];
  • Trong <> là bắt buộc phải có
  • Trong [ ] bạn có thể có hoặc không
  • Kiểu dữ liệu: Một kiểu dữ liệu trong Java
  • Tên biến: Tên mà bạn đặt cho một biến
  • Giá trị: Giá trị khởi tạo của biến
Trên một dòng bạn có thể khai báo nhiều biến cùng loại, trong đó các biến phân cách nhau bằng dấu phẩy.
Dưới đây là một vài ví dụ về khai báo biến trong Java:
int a = 10;   // Khai báo biến a với kiểu int
short s1 = 100, s2 = -10;   // Khai báo biến s1, s2 kiểu short
String st1 = "xin chao", st2 = "Nguyen Van A";  // khai báo 3 biến st1, st2 kiểu String

3 loại biến trong Java

Trong Java, biến được phân thành 3 loại là: biến cục bộ, biến instance, biến class/static. Phần tiếp theo đây chúng ta sẽ tìm hiểu chi tiết về chúng và xem một vài ví dụ để xem nó hoạt động như thế nào nhé.

1. Biến cục bộ

  • Biến cục bộ là các biến được khai báo bên trong một phương thức, constructor hoặc code-block
  • Biến cục bộ sẽ được thu dọn khỏi bộ nhớ sau khi kết thúc phương thức, constructor hoặc code-block
  • Khi khai báo, các biến cục bộ không được sử dụng các "access modifier"
  • Trước khi sử dụng, các biên cục bộ phải được gán giá trị mặc định
  • Biến cục bộ được tạo ra sẽ lưu trong vùng nhớ stack của bộ nhớ
Ví dụ về biến local
Trong ví dụ bên dưới đây các bạn có thể thấy rằng biến salary được khai báo là local. Sau khi kết thúc phương thức printSalary() thì chúng ta không thể gọi được nó nữa.
public class LocalVariableExample { 
   public void printSalary() {
      int salary = 0;
      salary = salary + 100;
      System.out.println("My salary is: " + age + "$");
   }
   
   public static void main(String args[]) {
      LocalVariableExample example = new LocalVariableExample();
      example.printSalary();
   }
}

2. Biến Instance

  • Biến instance được khai báo bên trong một lớp (class), nằm ngoài các phương thức, constructor và block-code
  • Biến instance được tạo ra cho đối tượng sẽ lưu trên bộ nhớ heap.
  • Biến instance được tạo khi đối tượng được tạo. Chúng ta có thể tạo ra đối tượng bằng cách sử dụng từ khóa new
  • Khi đối tượng bị phá hủy thì biến instance cũng sẽ bị phá hủy.
  • Biến instance khi được khai báo phải sử dụng "access modifier"
  • Biến instance có giá trị mặc định phụ thuộc vào kiểu dữ liệu của nó. Ví dụ nếu là kiểu int, short, byte thì giá trị mặc định là 0, kiểu double thì là 0.0d,…
  • Biến instance có thể được gọi trực tiếp trong lớp mà nó được khai báo bằng tên.
Ví dụ về biến instance
public class Employee {
   // Biến instance này có thể nhìn thấy bởi các lớp con.
   public String name;
   
   // Biến salary này chỉ có thể nhìn thấy được trong lớp Employee.
   private double salary;
   
   // Biến name được gán giá trị trong constructor
   public Employee (String empName) {
      name = empName;
   }

   // Biến salary được gán giá trị trong phương thức setSalary
   public void setSalary(double empSal) {
      salary = empSal;
   }
   
   // Phương thức này sẽ in ra thông tin của Employee
   public void printEmp() {
      System.out.println("name  : " + name );
      System.out.println("salary :" + salary);
   }

   public static void main(String args[]) {
      Employee empOne = new Employee("Thuong");
      empOne.setSalary(1000);
      empOne.printEmp();
   }
}

3. Biến Class/static

  • Biến Class hay biến static là biến được khai báo sử dụng từ khóa static trong một lớp, nằm bên ngoài các phương thức, constructor và block-code
  • Biến static chỉ tạo ra 1 bản sao duy nhất, cho dù bạn có tạo ra bao nhiêu đối tượng của lớp tương ứng đi chăng nữa.
  • Biến static hiếm khi được sử dụng, chủ yếu nó được dùng để khai báo các constants (hằng). Các hằng là các biến được khai báo public/private, final và static. Các biến hằng không bị thay đổi giá trị mặc định đã được gán khi khai báo.
  • Biến static được lưu trên bộ nhớ tĩnh. Nó sẽ được tạo ra khi chương trình bắt đầu và sẽ bị thu hồi khi chương trình kết thúc.
  • Giá trị mặc định của biến static phụ thuộc vào kiểu dữ liệu bạn khai báo tương tự biến instance.
  • Khi khai báo một hằng số, tên của biến sẽ được viết hoa. Ví dụ MAX_AGE, MIN_AGE,…
  • Các hằng có thể gọi từ bên ngoài của 1 Class mà không cần phải tạo đối tượng. Vì dụ. Employee.MAX_AGE
Ví dụ minh họa biến static
public class Employee {
   // salary là một biến private static
   private static double salary;

   // DEPARTMENT là một constant
   public static final String DEPARTMENT = "Development ";

   public static void main(String args[]) {
      salary = 1000;
      System.out.println(DEPARTMENT + "average salary:" + salary);
   }
}
Trong ví dụ trên, nếu như chúng ta muốn gọi đến constant thì chúng ta sẽ gọi theo cú pháp: Employee.DEPARTMENT.
Đăng bình luận

menu