1. Biến trong Java là gì?
Biến – Variable là một vùng chứa dữ liệu lưu các giá trị dữ liệu trong quá trình thực thi chương trình Java. Mỗi biến được gán một kiểu dữ liệu chỉ định kiểu và số lượng giá trị mà nó có thể giữ. Biến là tên vị trí bộ nhớ của dữ liệu. Giá trị trên bộ nhớ mà biến liên kết tới chính là giá trị của biến. Kiểu dữ liệu của biến cũng chính là kiểu dữ liệu lưu trên bộ nhớ đó. Trong Java, tất cả các biến phải được khai báo trước khi sử dụng.
Ta có thể hiểu nôm na biến là các đối tượng dùng để lưu trữ dữ liệu và các giá trị này có thể thay đổi được. Và trong Java thường có 3 loại biến mà ta thường gặp nhất:
- Biến cục bộ (local) : Đây là biến thường được khai báo trong 1 hay nhiều block ( {} ), và nó chỉ có thể hoạt động được trong phạm vi của block đó.
- Biến toàn cục (instance) : Đây là biến được khai báo trong một lớp nhưng lại không nằm trong block của method . Thuật ngữ của biến này thường được gọi là thuộc tính (property).
- Biến tĩnh (static) : Biến này tương tự như biến instance, nhưng sẽ luôn luôn chỉ có duy nhất một bản sao của các biến static được tạo ra, dù bạn tạo bao nhiêu đối tượng từ lớp tương ứng.
Ta sẽ được tìm hiểu kỹ hơn về những loại biến ở phần sau nhé
2. Khai báo một biến trong Java
Khai báo một biến trong Java là xử lý khai báo biến đồng thời với việc gán giá trị ban đầu cho biến đó. Để khai báo biến trong Java, chúng ta viết kiểu dữ liệu, tên biến cũng như là giá trị ban đầu của biến đó như sau:
type name = value;
- type là kiểu dữ liệu của biến. Nó có thể là int , char , float hoặc String mà ta sẽ học trong bài Kiểu dữ liệu trong Java
- name là tên biến sẽ được đặt theo quy tắc nhất định
- value là giá trị của biến.
Ví dụ: Tạo một biến name kiểu String và gán cho nó giá trị “Lập Trình Từ Đầu”:
class Main { public static void main(String[] args) { String name = "Lập Trình Từ Đầu"; System.out.println(name); } }
Kết quả :
Lập Trình Từ Đầu
Lưu ý
Khi khởi tạo biến trong Java thì chúng ta chỉ có thể gán một giá trị vào một biến có kiểu giống nó mà thôi.
2.1. Khai báo biến cục bộ
Một biến được xác định trong một khối hoặc phương thức hoặc hàm tạo được gọi là biến cục bộ – Local .
Các biến này được tạo khi khối được nhập hoặc hàm được gọi và bị hủy sau khi thoát khỏi khối hoặc khi lệnh gọi trả về từ hàm. Phạm vi của các biến này chỉ tồn tại trong khối mà biến được khai báo. Tức là, chúng ta chỉ có thể truy cập các biến này trong khối đó. Khởi tạo biến cục bộ là bắt buộc trước khi sử dụng nó trong phạm vi đã xác định.
Cú pháp :
kieu_du_lieu tenbien; // hoac kieu_du_lieu tenbien = gia_tri_cua_bien;
Trong đó
- access_modifier là phạm vi truy cập của biến. Nếu không khai báo thì nó sẽ là public
- kieu_du_lieu là kiểu dữ liệu của biến muốn khai báo.
- tenbien là tên của biến muốn khai báo.
- gia_tri_cua_bien là giá trị của biến mà muốn gán. Nếu bỏ trống trường này thì giá trị của biến sẽ bằng giá trị default của kiểu dữ liệu mà bạn khai báo.
Ví dụ: khai báo một biến age với kiểu dữ liệu là kiểu int và gán nó bằng 19
int age = 19;
2.2. Khai báo biến toàn cục
Biến toàn cục – instance là các biến được khai báo trong một lớp. Nhưng nó không nằm trong bất kì một phương thức, một hàm tạo hay khối lệnh nào cả. Các biến khi khởi tạo nếu không gán giá trị thì nó sẽ có giá trị mặc định. Các biến này có thể được sử dụng trong bất kì phương thức, hàm tạo,hay khối lệnh nào thuộc lớp chứa nó.
Cú pháp khai báo biến này thì tương đối giống với biến toàn cục. Chỉ khác là khai báo biến này sẽ cần chỉ định thêm access modifier cho biến
access_modifier kieu_du_lieu tenbien; // hoac access_modifier kieu_du_lieu tenbien = gia_tri_cua_bien;
Trong đó:
- access_modifier là phạm vi truy cập của biến. Nếu không khai báo thì nó sẽ là public
- kieu_du_lieu là kiểu dữ liệu của biến muốn khai báo.
- tenbien là tên của biến muốn khai báo.
- gia_tri_cua_bien là giá trị của biến mà muốn gán. Nếu bỏ trống trường này thì giá trị của biến sẽ bằng giá trị default của kiểu dữ liệu mà bạn khai báo.
Ví dụ:
class Main{ public void intTuoi(){ int tuoi=19;//Biến cục bộ trong phương thức intTuoi() System.out.println(tuoi); } public static void main(String[] args){ int nam_sinh = 2002; if (nam_sinh >0){ int tuoi =2022-nam_sinh;// Biến cục bộ trong khối lệnh if System.out.println(tuoi); } } }
Kết quả
19
2.3. Khai báo biến static
Biến static – biến tĩnh được khai báo bên trong lớp giống như biến instance . Nhưng nó lại không nằm trong bất kì một phương thức, một hàm tạo hay khối lệnh nào cả. Các biến này có thể được sử dụng trong bất kì phương thức, hàm tạo,hay khối lệnh nào thuộc lớp chứa nó. Các biến static được tạo khi chương trình chạy và chỉ bị hủy khi chương trình dừng. Thường dùng biến static để khai báo các biến hằng.
Cú pháp khai báo với từ khóa static
access_modifier static kieu_du_lieu tenbien; // hoac access_modifier static kieu_du_lieu tenbien = gia_tri_cua_bien;
Nếu biến static cùng tên với biến cục bộ thì phương thức, hàm tạo hay khối lệnh sẽ ưu tiên sử dụng biến cục bộ trước.
class Main{ public static int tuoi; //Biến static public static void main(String[] args){ System.out.println(tuoi); } }
3. Quy tắc đặt tên biến trong Java
Ứng với mỗi ngôn ngữ lập trình thì lại có những quy tắc đặt tên biến khác nhau mà chúng ta phải tuân theo. Trong Java cũng vậy, nó có những quy tắc như sau:
- Tên biến trong Java là có phân biệt HOA-thường, tức là name , Name hay NAME là 3 biến khác nhau.
- Kí tự đầu tiên của tên biến có thể là các chữ (a-zA-Z), dấu ‘$’ hoặc dấu gạch dưới ‘_’.
- Các kí tự tiếp theo có thể là các kí tự chữ (a-zA-Z), kí tự số (0-9), dấu ‘$’ và dấu gạch dưới ‘_’.
- Không được phép đặt tên biến trùng với các từ khóa (keyword) có sẵn trong Java. Danh sách các keyword trong Java như:
abstract continue for new switch assert default goto package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while
4. Hiển thị các biến trong Java
Phương thức println() thường được sử dụng để hiển thị các biến trong Java. Để kết hợp cả văn bản và một biến, ta hãy sử dụng ký tự +
Ví dụ:
class Main { public static void main(String[] args) { String name = "Thành"; System.out.println("Hello " + name); } }
Kết quả
Hello Thành
Hoặc ta cũng có thể sử dụng ký tự + để thêm một biến vào một biến khác:
class Main { public static void main(String[] args) { int x = 5; int y = 6; System.out.println(x + y); // In giá trị của x + y } }
Kết quả
11
5. Khởi tạo đồng loạt biến trong Java
Để khởi tạo biến trong Java chúng ta sẽ ghi kiểu dữ liệu, tên cũng như là giá trị của biến. Tuy nhiên trong trường hợp nhiều biến có cùng một kiểu dữ liệu, thì chúng ta có thể khởi tạo chúng cùng lúc. Các biến sẽ được phân cách nhau bằng dấu phẩy.
Cú pháp : type name1 = value1, name2 = value2, name3 = value;
Trong đó:
- type là kiểu dữ liệu của biến
- name là tên biến
- value là giá trị của biến
Ví dụ:
class Main { public static void main(String[] args) { int x = 5, y = 6, z = 50; System.out.println(x + y + z); } }
Kết quả
61
Chú ý
Cách viết int x,y,z = 10; là sai hoàn toàn nhé. Lúc này chỉ có biến z là được khởi tạo giá trị ban đầu bằng 10, trong khi 2 biến x và y thì lại không được gán giá trị này.
6. Một lưu ý nhỏ
Một lưu ý nhỏ cho phần khởi tạo và khai báo biến. Thực chất cả 2 hành động này đều có tác dụng tạo ra một biến để sử dụng trong chương trình Java. Tuy nhiên ta cần lưu ý rõ như sau:
- Khai báo: để giới thiệu cho chương trình biến như tên biến, kiểu dữ liệu biến,…
- Khởi tạo: cũng để giới thiệu cho chương trình biến như tên biến, kiểu dữ liệu biến,… Tuy nhiên ta cũng phải gán giá trị đầu tiên cho biến đó. Sau khi đã gán thì ta mới được coi là khởi tạo thành công một biến.
Ví dụ:
- Khởi tạo biến local
class Main{ public void sayHello() { int n = 10;// Đây là biến local System.out.println("Giá trị của n là: " + n); } public static void main(String[] args) { Bien bienLocal = new Bien(); bienLocal.sayHello(); } }
Kết quả
Giá trị của n là: 10
- Khai báo biến local (không khởi tạo biến)
class Main{ public void sayHello() { int n;// Đây là biến local System.out.println("Giá trị của n là: " + n); } public static void main(String[] args) { Bien bienLocal = new Bien(); bienLocal.sayHello(); } }
Kết quả hiển thị ra một lỗi biên dịch. Vì ta đã gán giá trị gì đâu!