VieTopik
Tiếng HànTiếng Anh.NET (C#)Java
  • Góc học tập
Tải app
  • Thư viện
  • Luyện thi
  • Cẩm nang
  • Góc học tập
Java CoreBắt đầu
Bài 2/19
5 phút

Biến và kiểu dữ liệu

Nội dung bài · 6 mục
  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Từ khoá var
  4. 4.Thử ngay
  5. 5.Lỗi hay gặp
  6. 6.Tóm tắt

Chương trình bán hàng cần nhớ tên sản phẩm, giá, số lượng trong kho. Để lưu những giá trị đó, bạn dùng biến. Mỗi biến có một kiểu, và chọn đúng kiểu là việc đầu tiên phải làm.

Khái niệm

📦 Biến (variable): một cái tên dùng để lưu và đọc lại một giá trị trong chương trình.

🏷️ Kiểu dữ liệu (data type): loại giá trị mà biến được phép chứa, ví dụ số nguyên hay chuỗi.

Java kiểm tra kiểu ngay lúc compile. Biến đã khai báo kiểu int thì không gán chuỗi vào được.

Ví dụ

void main() {
    String name = "Bút bi";
    int quantity = 120;
    long price = 5000;
    boolean inStock = true;

    System.out.println(name);
    System.out.println(price);
}

Khai báo biến theo mẫu kiểu tên = giá trị;. Các kiểu dùng nhiều nhất:

Kiểu Chứa gì Ví dụ
int số nguyên, tới khoảng 2,1 tỉ 120
long số nguyên lớn, dùng cho tiền (đồng) 5000
double số thực, tính nhanh nhưng có sai số nhỏ 1.75
boolean đúng hoặc sai true, false
String chuỗi chữ "Bút bi"
BigDecimal số thập phân chính xác new BigDecimal("0.1")
  • Tiền Việt không có phần lẻ, nên khoá học lưu giá bằng long, tính theo đồng.
  • String và BigDecimal viết hoa chữ cái đầu, các kiểu còn lại viết thường.
  • Tên biến viết kiểu camelCase: chữ đầu thường, các từ sau viết hoa (inStock, unitPrice).

Từ khoá var

Khi giá trị bên phải đã rõ kiểu, bạn có thể viết var thay cho tên kiểu:

void main() {
    var quantity = 120;      // int
    var price = 5000L;       // long
    var name = "Bút bi";     // String
}

var không phải kiểu "gì cũng được". Compiler tự suy ra kiểu từ giá trị, và kiểu này không đổi về sau.

Thử ngay

Dán vào Main.java rồi chạy java Main.java:

void main() {
    double a = 0.1;
    double b = 0.2;
    System.out.println(a + b);

    BigDecimal c = new BigDecimal("0.1");
    BigDecimal d = new BigDecimal("0.2");
    System.out.println(c.add(d));
}

Đoán trước khi chạy: hai dòng in ra có giống nhau không?

Xem kết quả
0.30000000000000004
0.3

Không giống. double lưu số theo hệ nhị phân nên có sai số nhỏ. BigDecimal lưu chính xác số thập phân, nhưng cộng bằng add chứ không bằng +.

Tiền đồng đã có long, nên BigDecimal chỉ dùng khi cần số lẻ chính xác, như giá USD hay tỉ giá.

Lỗi hay gặp

Gán sai kiểu. "5" là chuỗi, không phải số.

// SAI — lỗi compile: không gán chuỗi cho int
void main() {
    int quantity = "5";
}
// ĐÚNG
void main() {
    int quantity = 5;
}

Quên chữ L với số lớn. Số nguyên viết trong code mặc định là int, mà int chỉ chứa tới khoảng 2,1 tỉ.

// SAI — lỗi compile: integer number too large
void main() {
    long revenue = 3000000000;
}
// ĐÚNG
void main() {
    long revenue = 3000000000L;
}

Tóm tắt

  • Khai báo biến: kiểu tên = giá trị;.
  • int cho số nguyên, long cho tiền, boolean cho đúng/sai, String cho chữ.
  • var cho compiler tự suy ra kiểu, nhưng kiểu vẫn cố định.
  • Tiền dùng long tính bằng đồng, không dùng double. Cần số lẻ chính xác thì dùng BigDecimal.

Tự kiểm tra

0/3 câu
Câu 1

Bạn cần lưu tổng tiền (VND) của một hoá đơn. Kiểu nào phù hợp nhất?

Câu 2

Sau dòng var count = 10; thì dòng count = "mười"; có chạy được không?

Câu 3

Biến lưu trạng thái "đơn hàng đã thanh toán hay chưa" nên dùng kiểu gì?

Chương trình đầu tiênToán tử và ép kiểu

Nội dung bài

  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Từ khoá var
  4. 4.Thử ngay
  5. 5.Lỗi hay gặp
  6. 6.Tóm tắt