Các kiểu dữ liệu trong java

Tổng quan các kiểu dữ liệu

Java có 2 loại kiểu dữ liệu:

  • Các kiểu dữ liệu nguyên thủy (Primitive Data Types)
  • Các kiểu dữ liệu tham chiếu (Reference Types)

Các kiểu dữ liệu nguyên thuỷ

Có 8 kiểu dữ liệu nguyên thủy (Primitive Data type) đó là: boolean, byte, char, short, int, long, float, double.

cac-kieu-du-lieu-trong-java

Dưới đây là các thông số chi tiết

KiểuMô tảKích cỡTối thiểuTối đaLớp bao
bytesố nguyên một byte8 bit-128127Byte
shortsố nguyên ngắn16 bit-2^152^15-1Short
intsố nguyên32 bit-2^312^31-1Integer
longsố nguyên dài64 bit-2^63-2^63-1Long
floatkiểu thực với độ chính xác đơn32 bitIEEE754IEEE754Float
doubleDouble-precision floating point64 bitIEEE754IEEE754Double
charkiểu kí tự16 bitUnicode 0Unicode 2^16-1Character
booleankiểu logictrue hoặc false--Boolean
void----Void

Đặc điểm của các biến có kiểu nguyên thủy là vùng nhớ của chúng được cấp phát ở phần stack. Do vậy việc truy xuất vào một biến kiểu nguyên thủy rất nhanh.

Kiểu số nguyên trong Java

  • Java cung cấp 4 kiểu số nguyên khác nhau là: byte, short, int, long. Kích thước, giá trị nhỏ nhất, lớn nhất, cũng như giá trị mặc định của các kiểu dữ liệu số nguyên được mô tả chi tiết trong bảng trên.
  • Kiểu mặc định của các số nguyên là kiểu int.
  • Các số nguyên kiểu byteshort rất ít khi được dùng.
  • Trong java không có kiểu số nguyên không dấu như trong ngôn ngữ C/C++.

Khai báo và khởi tạo giá trị cho các biến kiểu nguyên:

int x = 0;
long y = 100;

Nếu hai toán hạng kiểu long thì kết quả là kiểu long. Một trong hai toán hạng không phải kiểu long sẽ được chuyển thành kiểu long trước khi thực hiện phép toán.

  • Nếu hai toán hạng đầu không phải kiểu long thì phép tính sẽ thực hiện với kiểu int.
  • Các toán hạng kiểu byte hay short sẽ được chuyển sang kiểu int trước khi thực hiện phép toán.
  • Trong java không thể chuyển biến kiểu int và kiểu boolean như trong ngôn ngữ C/C++.

Ví dụ:

boolean b = false;
if (b == 0) {
  System.out.println("Xin chao");
}

Lúc biên dịch đoạn chương trình trên trình dịch sẽ báo lỗi không được phép so sánh biến kiểu boolean với một giá trị kiểu int.

Kiểu dấu chấm động trong Java

Đối với kiểu dấu chấm động hay kiểu thực, java hỗ trợ hai kiểu dữ liệu là floatdouble.

  • Kiểu float có kích thước 4 byte và giá trị mặc định là 0.0f.
  • Kiểu double có kích thước 8 byte và giá trị mặc định là 0.0d

Số kiểu dấu chấm động không có giá trị nhỏ nhất cũng không có giá trị lớn nhất. Chúng có thể nhận các giá trị:

  • Số âm
  • Số dương
  • Vô cực âm
  • Vô cực dương

Ví dụ khai báo và khởi tạo giá trị cho các biến kiểu dấu chấm động:

float x = 100.0/7;
double y = 1.56E6;

Một số lưu ý đối với các phép toán trên số dấu chấm động

  • Nếu mỗi toán hạng đều có kiểu dấn chấm động thì phép toán chuyển thành phép toán dấu chấm động.
  • Nếu có một toán hạng là double thì các toán hạng còn lại sẽ được chuyển thành kiểu double trước khi thực hiện phép toán.
  • Biến kiểu float và double có thể ép chuyển sang kiểu dữ liệu khác trừ kiểu boolean.

Kiểu ký tự (char) trong Java

Kiểu ký tự trong ngôn ngữ lập trình java có kích thước là 2 bytes và chỉ dùng để biểu diễn các ký tự trong bộ mã Unicode. Như vậy kiểu char trong java có thể biểu diễn tất cả 2^16 = 65536 ký tự khác nhau.

Giá trị mặc định cho một biến kiểu charnull.

kiểu dữ liệu kí tự
char myLetter = 'D';

Kiểu Boolean trong Java

  • Kiểu boolean chỉ nhận 1 trong 2 giá trị: true hoặc false.
  • Trong java kiểu boolean không thể chuyển thành kiểu nguyên và ngược lại.
  • Giá trị mặc định của kiểu booleanfalse.
boolean myBool = true;

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

Trong Java có 3 kiểu dữ liệu tham chiếu

Kiểu dữ liệuMô tả
Mảng (Array)Tập hợp các dữ liệu cùng kiểu.
Lớp (Class)Là sự cài đặt mô tả về một đối tượng trong bài toán.
Giao diện (Interface)Là một lớp thuần trừu tượng được tạo ra cho phép cài đặt đa thừa kế trong Java.

Đặc điểm của các biến kiểu tham chiếu là nó chứa địa chỉ của đối tượng mà nó trỏ đến.

Vùng nhớ của biến tham chiếu được cấp phát ở vùng nhớ stack còn vùng nhớ của đối tượng được cấp phát ở vùng nhớ heap. Việc truy xất vào vùng nhớ heap chậm hơn truy xất vào vùng nhớ stack tuy nhiên java có cơ chế cho phép truy cập vào vùng nhớ heap với tốc độ xấp xỉ bằng tốc độ truy cập vào vùng nhớ stack.

Avatar Administrator

Administrator

@thaycacac
Bạn cần sự hiểu biết và sáng tạo nên cuộc sống đã ban cho bạn đôi bàn tay và trí óc để khám phá và làm việc
Logo thể loại Java

Java

Chuyên mục học lập trình
Học Java từ cơ bản đến thông thạo cho mọi đối tượng
hello