Kiểu Dữ Liệu (Data Types)

Tìm hiểu kiểu dữ liệu (Data Types) trong Java, gồm kiểu nguyên thủy và kiểu tham chiếu, cách khai báo, sử dụng và chuyển đổi dữ liệu.

    Kiểu dữ liệu (data type) trong lập trình Java quy định kích thước và loại giá trị mà một biến có thể lưu trữ. Java có hai loại kiểu dữ liệu chính: Kiểu dữ liệu nguyên thủy (Primitive Data Types), Kiểu dữ liệu phi nguyên thủy (Non-primitive Data Types).

Ảnh mô tả hệ thống các kiểu dữ liệu trong Java.

Ⅰ. Kiểu dữ liệu nguyên thủy (Primitive data types)

    Là những kiểu dữ liệu cơ bản được cung cấp sẵn bởi Java. Chúng chiếm một lượng bộ nhớ cố định và không thể thay đổi kích thước. Bao gồm các kiểu dữ liệu sau:


Kiểu Dữ Liệu

Kích Thước

Giới Hạn Giá Trị

Ví Dụ

boolean

1 byte

true hoặc false

true, false

char

2 byte

Mã ký tự Unicode (0 đến 65,535)

'A', 'b', '@'

byte

1 byte

-128 đến 127

100, -50, 0

short

2 byte

-32,768 đến 32,767

1500, -2000

int

4 byte

-2,147,483,648 đến 2,147,483,647

1000000, -5000

long

8 byte

-9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807

10000000000L, -5000000000L

float

4 byte

-3.4E38 đến 3.4E38

3.14f, -0.5f

double

8 byte

-1.7E308 đến 1.7E308

3.141592653589793, -0.123456789


Giá trị mặc định của biến trong Java

    Trong Java, bạn không nhất thiết phải gán giá trị cho biến ngay khi khai báo. Nếu bạn khai báo một biến nhưng không gán giá trị (khởi tạo), trình biên dịch sẽ tự động đặt một giá trị mặc định hợp lý cho biến đó.

    Thông thường, giá trị mặc định sẽ là 0 hoặc null phụ thuộc vào kiểu dữ liệu của biến.     Tuy nhiên, việc phụ thuộc vào giá trị mặc định này thường được coi là một cách lập trình không tốt.

Bảng dưới đây tóm tắt các giá trị mặc định cho các kiểu dữ liệu cơ bản:


Kiểu Dữ Liệu

Giá Trị Mặc Định

byte

0

short

0

int

0

long

0L

float

0.0f

double

0.0d

char

\u0000 (Ký tự trống)

String (hoặc bất kỳ đối tượng nào)

null

boolean

false


Lưu ý về biến cục bộ (local variable):

    ↳ Biến cục bộ khác với trường (field). Trình biên dịch sẽ không tự động gán giá trị mặc định cho biến cục bộ chưa được khởi tạo.

    ↳ Nếu bạn không thể khởi tạo biến cục bộ ngay khi khai báo, hãy nhớ gán giá trị cho biến đó trước khi sử dụng. Truy cập vào một biến cục bộ chưa được khởi tạo sẽ dẫn đến lỗi biên dịch.

Ⅱ. Kiểu dữ liệu phi nguyên thủy (Non-primitive data types)

    Là những kiểu dữ liệu được xây dựng từ các kiểu dữ liệu nguyên thủy. Chúng có kích thước linh hoạt và có thể chứa các đối tượng (object) phức tạp. Bao gồm các kiểu dữ liệu sau:

    ↳ Classes: Bản thiết kế để tạo ra các đối tượng. Mỗi đối tượng là một instance của một class và có thể chứa các thuộc tính (property) và phương thức (method).

    ↳ Interfaces: Định nghĩa một hợp đồng (contract) mà các lớp khác phải tuân theo.

    ↳ Arrays: Mảng là một tập hợp các phần tử có cùng kiểu dữ liệu, được truy cập bằng chỉ số.

Ⅲ. Ép kiểu dữ liệu

    Ép kiểu (type casting) trong Java là quá trình chuyển đổi giá trị từ một kiểu dữ liệu sang kiểu dữ liệu khác. Việc ép kiểu thường cần thiết khi bạn muốn thực hiện các phép toán hoặc gán giá trị giữa các biến có kiểu dữ liệu khác nhau. Có hai loại ép kiểu chính:

1. Ép kiểu ngầm định (Implicit Casting):

    Xảy ra tự động khi trình biên dịch Java nhận ra rằng có thể chuyển đổi giá trị từ kiểu dữ liệu này sang kiểu dữ liệu khác một cách an toàn và không gây mất dữ liệu.

Thường xảy ra khi chuyển đổi từ kiểu dữ liệu nhỏ hơn sang kiểu dữ liệu lớn hơn.

Ví dụ
byte b = 10;
int i = b; // Ép kiểu ngầm định từ byte sang int

2. Ép kiểu tường minh (Explicit Casting):

    Yêu cầu lập trình viên sử dụng toán tử ép kiểu để chuyển đổi giá trị. Thường xảy ra khi chuyển đổi từ kiểu dữ liệu lớn hơn sang kiểu dữ liệu nhỏ hơn hoặc khi cần kiểm soát rõ ràng việc chuyển đổi.

Có hai loại ép kiểu tường minh (Explicit Casting):

    ↳ Ép kiểu thu hẹp (Narrowing Casting): Chuyển đổi từ kiểu dữ liệu lớn hơn sang kiểu dữ liệu nhỏ hơn. Có thể dẫn đến mất dữ liệu nếu giá trị không nằm trong phạm vi cho phép của kiểu dữ liệu đích.

Ví dụ
int i = 100;
byte b = (byte) i; // Ép kiểu thu hẹp từ int sang byte (có thể dẫn đến mất dữ liệu)

Ảnh mô tả ép kiểu thu hẹp (Narrowing Casting).
Ảnh mô tả ép kiểu thu hẹp (Narrowing Casting).

    ↳ Ép kiểu mở rộng (Widening Casting): Chuyển đổi từ kiểu dữ liệu nhỏ hơn sang kiểu dữ liệu lớn hơn. Không dẫn đến mất dữ liệu.

Ví dụ
byte b = 10;
int i = (int) b; // Ép kiểu mở rộng từ byte sang int

Ảnh mô tả ép kiểu mở rộng (Widening Casting).
Ảnh mô tả ép kiểu mở rộng (Widening Casting).

Lưu ý:

    ↳ Sử dụng ép kiểu ngầm định khi có thể vì nó đơn giản và hiệu quả hơn.

    ↳ Sử dụng ép kiểu tường minh khi cần kiểm soát rõ ràng việc chuyển đổi hoặc khi ép kiểu thu hẹp.

    ↳ Cần cẩn thận khi ép kiểu thu hẹp vì có thể dẫn đến mất dữ liệu.


Giới thiệu tác giả

Tiểu Share là nơi chia sẻ kiến thức về Facebook, TikTok, Instagram, YouTube, công nghệ, lập trình và Java. Cập nhật những tính năng mới, hướng dẫn thực tế và kiến thức dễ hiểu dành cho mọi người.

Đăng nhận xét

Tổng lượt xem trang

Đồng ý sử dụng Cookie
Chúng tôi sử dụng cookie trên trang web này để phân tích lưu lượng truy cập, ghi nhớ tùy chọn của bạn và tối ưu hóa trải nghiệm của bạn.
Xem chi tiết
Rất tiếc!
Có vẻ như kết nối Internet của bạn đang gặp sự cố. Vui lòng kết nối Internet và thử duyệt web lại.”
Phát hiện trình chặn quảng cáo!
Chúng tôi phát hiện rằng bạn đang sử dụng tiện ích chặn quảng cáo trên trình duyệt. Doanh thu từ quảng cáo giúp chúng tôi duy trì và vận hành website. Vì vậy, chúng tôi rất mong bạn vui lòng thêm website của chúng tôi vào danh sách cho phép (whitelist) trong tiện ích chặn quảng cáo của mình. Xin cảm ơn bạn đã ủng hộ!
Site is Blocked
Sorry! This site is not available in your country.