Biến là một khái niệm cơ bản và quan trọng trong lập trình, giúp lưu trữ và quản lý dữ liệu trong suốt quá trình thực thi chương trình. Trong Java, biến đóng vai trò then chốt trong việc lưu trữ thông tin và truyền dữ liệu giữa các phần của chương trình. Hiểu rõ về các loại biến, cách khai báo và sử dụng chúng một cách hiệu quả là điều cần thiết để trở thành một lập trình viên Java chuyên nghiệp.
Khái niệm về biến trong Java
Biến (variable) là một tên gọi đại diện cho một vùng nhớ trong bộ nhớ của máy tính, dùng để lưu trữ dữ liệu có thể thay đổi trong quá trình thực thi chương trình. Mỗi biến có một kiểu dữ liệu (data type) xác định giá trị mà nó có thể lưu trữ.
Trong Java, biến được chia thành ba loại chính:
- Biến cục bộ (Local Variables): Được khai báo bên trong phương thức, khối lệnh hoặc hàm tạo. Biến cục bộ chỉ có hiệu lực trong phạm vi của phương thức, khối lệnh hoặc hàm tạo nơi nó được khai báo.
- Biến instance (Instance Variables): Được khai báo bên ngoài các phương thức nhưng bên trong lớp. Biến instance là thuộc tính của một đối tượng và có thể có các giá trị khác nhau cho từng đối tượng.
- Biến class (Class Variables): Được khai báo với từ khóa
static
, là thuộc tính chung của tất cả các đối tượng thuộc lớp đó. Biến class chỉ có một bản sao duy nhất và được chia sẻ giữa tất cả các đối tượng.
Khai báo và khởi tạo biến
Cách khai báo biến
Để khai báo một biến trong Java, bạn cần xác định kiểu dữ liệu và tên biến. Cú pháp khai báo biến như sau:
type variableName;
Ví dụ:
int age; String name;
Khởi tạo biến
Khởi tạo biến là quá trình gán giá trị ban đầu cho biến. Bạn có thể khởi tạo biến ngay khi khai báo hoặc ở một bước riêng biệt.
int age = 25; String name; name = "John";
Các quy tắc đặt tên biến
Tên biến trong Java phải tuân thủ các quy tắc sau:
- Bắt đầu bằng một chữ cái, dấu gạch dưới (_) hoặc ký tự đô la ($)
- Không được trùng với các từ khóa của Java
- Phân biệt chữ hoa và chữ thường
Các loại biến trong Java
Biến cục bộ (Local Variables)
Biến cục bộ được khai báo bên trong phương thức, khối lệnh hoặc hàm tạo và chỉ có hiệu lực trong phạm vi của chúng.
public void myMethod() { int localVar = 10; // Biến cục bộ System.out.println(localVar); }
Biến instance (Instance Variables)
Biến instance là thuộc tính của một đối tượng, được khai báo bên ngoài các phương thức nhưng bên trong lớp.
public class MyClass { int instanceVar; // Biến instance public MyClass(int value) { this.instanceVar = value; } }
Biến class (Class Variables)
Biến class được khai báo với từ khóa static
, là thuộc tính chung của tất cả các đối tượng thuộc lớp đó.
public class MyClass { static int classVar; // Biến class public MyClass(int value) { MyClass.classVar = value; } }
Biến hằng số (Final Variables)
Biến hằng số là biến có giá trị không thay đổi sau khi được khởi tạo, được khai báo với từ khóa final
.
final int CONSTANT_VAR = 100;
Ví dụ về biến hằng số
public class MyClass { public static final double PI = 3.14159; public void printPI() { System.out.println(PI); } }
Phạm vi của biến (Variable Scope)
Phạm vi của biến cục bộ
Biến cục bộ chỉ có hiệu lực trong phạm vi phương thức, khối lệnh hoặc hàm tạo nơi nó được khai báo.
public void myMethod() { int localVar = 10; // localVar chỉ có hiệu lực trong phương thức này }
Phạm vi của biến instance
Biến instance có phạm vi là toàn bộ lớp và có thể được truy cập từ các phương thức khác nhau của đối tượng.
public class MyClass { int instanceVar; public void setInstanceVar(int value) { this.instanceVar = value; } public int getInstanceVar() { return this.instanceVar; } }
Phạm vi của biến class
Biến class có phạm vi toàn bộ lớp và có thể được truy cập mà không cần khởi tạo đối tượng.
public class MyClass { static int classVar; public static void setClassVar(int value) { MyClass.classVar = value; } public static int getClassVar() { return MyClass.classVar; } }
Biến tĩnh (Static Variables)
Định nghĩa biến tĩnh
Biến tĩnh là biến được khai báo với từ khóa static
, thuộc về lớp chứ không phải đối tượng cụ thể.
Sự khác biệt giữa biến tĩnh và biến instance
- Biến tĩnh có một bản sao duy nhất cho tất cả các đối tượng của lớp.
- Biến instance có một bản sao riêng cho mỗi đối tượng.
Ví dụ về biến tĩnh
public class MyClass { static int staticVar; public MyClass(int value) { MyClass.staticVar = value; } public static void printStaticVar() { System.out.println(staticVar); } }
Truy cập và sửa đổi biến
Truy cập biến
Biến có thể được truy cập trực tiếp bằng tên biến trong phạm vi của chúng hoặc thông qua đối tượng với biến instance và class.
MyClass obj = new MyClass(5); System.out.println(obj.instanceVar); // Truy cập biến instance System.out.println(MyClass.classVar); // Truy cập biến class
Sửa đổi giá trị biến
Giá trị của biến có thể được sửa đổi bằng cách gán giá trị mới.
obj.instanceVar = 10; MyClass.classVar = 20;
Các phương thức getter và setter
Phương thức getter và setter được sử dụng để truy cập và sửa đổi giá trị của biến một cách an toàn.
public class MyClass { private int instanceVar; public int getInstanceVar() { return instanceVar; } public void setInstanceVar(int value) { this.instanceVar = value; } }
Kết luận
Hiểu và sử dụng đúng cách biến trong Java là một phần quan trọng để xây dựng các ứng dụng mạnh mẽ và hiệu quả. Biến giúp lưu trữ và quản lý dữ liệu trong suốt quá trình thực thi chương trình. Việc nắm vững các loại biến, phạm vi và cách sử dụng chúng sẽ giúp bạn viết mã nguồn rõ ràng, dễ bảo trì và hiệu quả hơn.