[Java căn bản] Bài 4: Biến và các kiểu biến trong Java

[Java căn bản] Bài 4: Biến và các kiểu biến trong Java

Biến là một thành phần quan trọng trong một ngôn ngữ lập trình. Biến lưu trữ giá trị và đưa giá trị đó vào các hàm xử lý. Biến thường đi kèm với một loại kiểu dữ liệu nhất định (cũng có những biến không quy định kiểu dữ liệu, nhưng sẽ được nhận kiểu khi gán giá trị, vd: var.). Trong bài viết này mình sẽ chia sẻ đến bạn biến và các kiểu biến trong Java một cách dễ hiểu nhất.

Biến là gì? cú pháp của biến trong Java

Biến là một vùng nhớ được khai báo để nhận một giá trị lưu trữ tạm thời. Như cái tên của nó, biến có thể thay đổi giá trị liên tục tùy theo cách xử lý trong suốt quá trình thực thi. Tùy theo kiểu dữ liệu của biến mà biến có độ lớn-nhỏ khác nhau. Trong Java, biến có thể được khai báo và được gán giá trị ngay ban đầu.

Cú pháp: kieu_du_lieu ten_bien_1 [ = giatri], ten_bien_2 [= giatri] ... ;

Ví dụ:

  • int a = 1, b =2;  Khai báo nhiều biến kiểu int được gán giá trị sẵn.
  • int a,b,c,d;   Khai báo nhiều biến kiểu int không cần gán giá trị sẵn.
  • double p = 1.55;   khai báo một biến kiểu double được gắn giá trị sẵn.

Các kiểu biến trong Java

Java hay các ngôn ngữ lập trình khác đều có kiểu biến, kiểu biến thể hiện mức độ phạm vi mà biến có thể hoạt động được. Thông thường sẽ có các kiểu biến sau:

Biến local trong Java

Giống như cái tên của nó, biến local là một loại biến cục bộ, chỉ có thể được sử dụng nội bộ trong phạm vi nó được khai báo.

Ví dụ mình có đoạn code sau:

public class tuandc {
     public void var_local ()
     {
        int a = 1;
     }
     public static void main(String[] args) {
        System.out.println(a);
     }
}

Khi thực thi đoạn code trên mình sẽ gặp một lỗi ngay dòng System.out.println(a);. Nguyên nhân là biến a chỉ được khai báo trong thủ tục var_local () nên không thể sử dụng trong thủ tục main được.

Bây giờ chúng ta sửa lại đoạn trên thành như sau:

public class tuandc {
      public void var_local()
      {
         int a = 1;
         System.out.println(a);
      }
      public static void main(String[] args) {
         tuandc tdc = new tuandc(); 
         tdc.var_local();
      }
}

Bạn có thể thấy mình đã chuyển đoạn System.out.println(a); lên thủ tục var_local(). Ở thủ tục main mình chỉ gọi lại thủ tục var_local() để thực thi đoạn code trên (vì thủ tục main là thủ tục chính, tự khởi động khi ứng dụng thực thi).

Trong thủ tục main mình phải khởi tạo class và đặt tên là tdc, và khi muốn gọi đến var_local() mình phải gọi đến tdc trước. Phần này sẽ được nói rõ hơn trong lập trình hướng đối tượng.

Đó là biến local, vậy nếu muốn dùng chung một biến trong nhiều thủ tục thì phải làm sao? khi đó mình sử dụng một biến dạng toàn cục trong java.

Biến class trong Java

Biến này cũng tương tự biến local, chỉ khác là nó không được nằm trong bất cứ một thủ tục nào mà nằm ngay trong class. Ví dụ đoạn code sau:

public class tuandc {
    int b = 10;
    public void var_local()
    {
       int a = 1;
       System.out.println(a*b);
    }
    public static void main(String[] args) {
       tuandc tdc = new tuandc(); 
       tdc.var_local();
    }
}

Biến b được khởi tạo ngoài các thủ tục và được gọi vào thủ tục var_local()  một cách đơn giản mà không cần phải khởi tạo lại.

Biến class được chia thành 2 loại nhỏ nữa là loại public và private.

  • Biến class toàn cục public: Đây là loại biến có thể được truy cập từ bất cứ nơi nào, kể cả các class khác. Biến được khai báo với cú pháp public kieu_du_lieu ten_du_lieu.
  • Biến class cục bộ private: Đây là loại biến cục bộ, chỉ có thể truy cập được bởi các thủ tục trong class, các class bên ngoài không thể truy vấn đến. Cú pháp private kieu_du_lieu ten_du_lieu.
  • Trong trường hợp biến class không sử dụng public hoặc private thì biến được xem là public.

Ví dụ:

  • Mình sẽ tạo thêm một class có tên tuandc2 và có đoạn code sau:
public class tuandc2 {
   private int tuoi = 25;
}
  • Bên class tuandc, trong thủ tục main mình sẽ gọi như sau:
public class tuandc {
   public static void main(String[] args) {
      tuandc2 toi = new tuandc2();
      System.out.println(toi.tuoi);
   }
}
  • Lỗi sẽ phát sinh tại toi.tuoi với lý do là biến tuoi không được sử dụng ngoài class tuandc2.
  • Bạn thử thay private thành public hoặc xóa private luôn sẽ không còn lỗi.

Trong Java còn một loại kiểu biến nữa đó là static, cú pháp: public/private static kieu_du_lieu ten_bien. Static giúp cho việc truy cập thẳng để biến được dễ dàng hơn mà không cần phải khởi tạo class trong class khác. Ví dụ:

Trong class tuandc2 mình khai báo một biến static như sau:

public class tuandc2 {
   public static int ks = 23;
}

và trong class tuandc mình chỉ việc gọi thẳng như thế này:

public class tuandc {
   public static void main(String[] args) {
      System.out.println(tuandc2.ks);
   }
}

Tóm lại là biến trong Java có các loại như local (được tạo và gọi trong một thủ tục), class (được tạo và gọi trong một class hoặc ở class khác.). Biến class được chia làm 2 loại là public (được gọi ở mọi nơi, kể cả class khác) và private (chỉ có thể được gọi trong một class). Loại biến static có thể giúp biến được gọi trực tiếp mà không cần phải khởi tạo class.