Các kiểu dữ liệu cơ bản trong Java

Bài viết này sẽ giới thiệu sơ qua các kiểu dữ liệu rất cơ bản cần phải nắm được khi bước đầu tiếp cận học lập trình Java.

Các ứng dụng luôn xử lý dữ liệu ở đầu vào và xuất dữ liệu kết quả ở đầu ra. Đầu vào, đầu ra và kết quả của các quá trình tính toán đều liên quan đến dữ liệu. Trong môi trường tính toán, dữ liệu được phân lớp theo các tiêu chí khác nhau phụ thuộc vào bản chất của nó. Ở mỗi tiêu chí, dữ liệu có một tính chất xác định và có một kiểu thể hiện riêng biệt.

Java cung cấp một vài kiểu dữ liệu, chúng được hỗ trợ trên tất cả các nền. Ví dụ, dữ liệu loại int (integer) của Java được thể hiện bằng 4 bytes trong bộ nhớ của tất cả các loại máy bất luận ở đâu chạy chương trình Java. Bởi vậy các chương trình Java không cần phải thay đổi khi chạy trên các nền khác nhau.

Trong Java kiểu dữ liệu được chia thành hai loại:

Các kiểu dữ liệu nguyên thủy (primitive)

Các kiểu dữ liệu tham chiếu (reference)

Các kiểu dữ liệu nguyên thủy trong Java

Có 8 kiểu dữ liệu nguyên thủy được hỗ trợ bởi Java. Các kiểu dữ liệu gốc này được tiền định nghĩa bởi ngôn ngữ và được định danh bởi một từ khóa. Dưới đây là chi tiết về 8 kiểu dữ liệu gốc này:


byte:

Dùng để lưu dữ liệu kiểu số nguyên có kích thước một byte (8 bit)

Giá trị nhỏ nhất là -128 (-2^7)

Giá trị lớn nhất là 127. (2^7 -1)

Giá trị mặc định là 0

Kiểu dữ liệu byte được sử dụng để lưu giữ khoảng trống trong các mảng lớn, chủ yếu là các số nguyên.

Ví dụ: byte a = 100 , byte b = -50

short:

Dùng để lưu dữ liệu có kiểu số nguyên, kích cỡ 2 byte (16 bit).

Giá trị nhỏ nhất là -32,768 (-2^15)

Giá trị lớn nhất là 32,767. (2^15 -1)

Kiểu dữ liệu short cũng có thể được sử dụng để lưu bộ nhớ như kiểu dữ liệu byte.

Giá trị mặc định là 0.

Ví dụ: short s = 10000, short r = -20000

int:

Dùng để lưu dữ liệu có kiểu số nguyên, kích cỡ 4 byte (32 bit).

Giá trị nhỏ nhất là - 2,147,483,648.(-2^31)

Giá trị lớn nhất là 2,147,483,647. (2^31 -1)

Nói chung, int được sử dụng như là kiểu dữ liệu mặc định cho các giá trị nguyên.

Giá trị mặc định là 0.

Ví dụ: int a = 100000, int b = -200000

long:

Dùng để lưu dữ liệu có kiểu số nguyên có kích thước lên đến 8 byte.

Giá trị nhỏ nhất là -9,223,372,036,854,775,808.(-2^63)

Giá trị lớn nhất là 9,223,372,036,854,775,807. (2^63 -1)

Kiểu này được sử dụng khi cần một dải giá trị rộng hơn int.

Giá trị mặc định là 0L.

Ví dụ: long a = 100000L, int b = -200000L

float:

Dùng để lưu dữ liệu có kiểu số thực, kích cỡ 4 byte (32 bit)

Kiểu Float được sử dụng chủ yếu để lưu bộ nhớ trong các mảng rộng hơn các số dấu chấm động.

Giá trị mặc định là 0.0f.

Kiểu Float không bao giờ được sử dụng cho các giá trị chính xác như currency.

Ví dụ: float f1 = 234.5f

double:

Kiểu dữ liệu double được sử dụng để lưu dữ liệu có kiểu số thực có kích thước lên đến 8 byte.

Nói chung, kiểu dữ liệu này được sử dụng như là kiểu mặc định cho các giá trị decimal.

Kiểu double không bao giờ được sử dụng cho các giá trị chính xác như currency.

Giá trị mặc định là 0.0d.

Ví dụ: double d1 = 123.4

boolean:

Độ lớn chỉ có 1 bit

Dùng để lưu dữ liệu chỉ có hai trạng thái true hoặc false

Giá trị mặc định là false.

Ví dụ: boolean one = true

char:

Dùng để lưu dữ liệu kiểu kí tự hoặc số nguyên không âm có kích thước 2 byte (16 bit)

Giá trị nhỏ nhất là '\u0000' (hoặc 0).

Giá trị lớn nhất là '\uffff' (hoặc 65,535).

Kiểu char được sử dụng để lưu bất kỳ ký tự nào

Ví dụ: char letterA ='A'

Kiểu dữ liệu tham chiếu trong Java

Các biến tham chiếu được tạo bởi sử dụng các constructor đã được định nghĩa của các lớp. Chúng được sử dụng để truy cập các đối tượng. Những biến này được khai báo ở kiểu cụ thể mà không thể thay đổi. Ví dụ: Employee, Puppy, …

Giá trị mặc định của bất kỳ biến đối tượng nào là null

Một biến đối tượng có thể được sử dụng để tham chiếu tới bất kỳ đối tượng nào trong kiểu được khai báo hoặc bất kỳ kiểu tương thích nào.

Ví dụ: Animal animal = new Animal("giraffe");

Ép kiểu (Type casting)

Có thể bạn sẽ gặp tình huống khi cộng một biến có dạng integer với một biến có dạng float. Để xử lý tình huống này, Java sử dụng tính năng ép kiểu (type casting) của các phần mềm trước đó C, C++. Lúc này một kiểu dữ liệu sẽ chuyển đổi sang kiểu khác. Khi sử dụng tính chất này, bạn cần thận trọng vì khi điều chỉnh dữ liệu có thể bị sai giá trị.

Đoạn mã sau đây thực hiện phép cộng một giá trị dấu phẩy động (float) với một giá trị nguyên (integer).

float c=34.896751f;

    Int b = (int)c +10; 

Đầu tiên giá trị dấu phảy động c được đổi thành giá trị nguyên 34. Sau đó nó được cộng với 10 và kết quả là giá trị 44 được lưu vào b.

Sự nới rộng (widening) – quá trình làm tròn số theo hướng nới rộng không làm mất thông tin về độ lớn của mỗi giá trị.Biến đổi theo hướng nới rộng chuyển một giá trị sang một dạng khác có độ rộng phù hợp hơn so với nguyên bản. Biến đổi theo hướng lại thu nhỏ lại (narrowwing) làm mất thông tin về độ lớn của giá trị được chuyển đổi. Chúng không được thực hiện khi thực hiện phép gán. Ở ví dụ trên giá trị thập phân sau dấu phảy sẽ bị mất.

Bài viết này hy vọng sẽ giúp các bạn hiểu thêm về các kiểu dữ liệu đa dạng trong Java. 

Nếu bạn muốn sử dụng thành thạo và thành công về ngôn ngữ Java bạn có thể tìm hiểu thông tin về khóa học lập trình Java tại stanford.com.vn.

Sưu tầm

Nhật Lệ (Stanford - Nâng tầm tri thức)

 


Tags: