Content text 03_Kiểu dữ liệu trong Java.docx
KIỂU DỮ LIỆU TRONG JAVA 1. Kiểu dữ liệu trong Java (Data Type). Kiểu dữ liệu trong Java dùng để xác định kích thước và loại giá trị có thể được lưu trữ trong một định danh (bao gồm tên biến, phương thức, tên lớp, Interface và tên Package). Các kiểu dữ liệu khác nhau cho phép chúng ta lựa chọn kiểu phù hợp với yêu cầu các bài toán trong ngôn ngữ lập trình. Trong Java có 2 kiểu dữ liệu thường gặp đó là: kiểu dữ liệu nguyên thủy (Primitive data) và Kiểu dữ liệu tham chiếu (Reference data). 1) Kiểu dữ liệu nguyên thủy (Primitive data) Kiểu dữ liệu nguyên thủy là kiểu dữ liệu đơn giản nhất trong Java. Tại một thời điểm, một kiểu dữ liệu nguyên thủy chỉ lưu trữ một giá trị đơn, không có các thông tin khác. Java có 8 kiểu dữ liệu nguyên thủy thường gặp: Kiểu dữ liệu Kích thước (bits) Phạm vi giá trị Ví dụ byte 8 -128 đến 127 byte byteNumber = 100; short 16 -32,768 đến 32,767 short shortNumber = 10000; int 32 -2,147,483,648 đến 2,147,483,647 int intNumber = 100000; long 64 -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 long longNumber = 100000l; float 32 1.4E -45 đến 3.4028235E 38 float floatNumber = 9.08f; double 64 4.9E -34 đến 1.7976931348623157E 308 double doubleNumber = 9.08; boolean 1 true/false (mặc định là false) boolean boolValue = true; char 16 0 đến 65,535 char charValue = 'a'; 2) Kiểu dữ liệu tham chiếu (Reference data) Các biến đối tượng đượ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. Các kiểu dữ liệu phổ biến như String, List, các đối tượng (instance) của các class 2. Ép kiểu (Type Casting) trong Java.
Ép kiểu trong Java là quá trình chuyển đổi kiểu dữ liệu này sang kiểu dữ liệu khác. Chúng ta cần sử dụng đến thao tác ép kiểu khi chúng ta cần chuyển đổi kiểu dữ liệu của biến này sang kiểu dữ liệu khác để phục vụ cho một mục đích nào đó. Ví dụ: Chúng ta thực hiện phép chia số nguyên 2 cho 4, nếu chúng ta không sử dụng đến ép kiểu thì kết quả của phép toán này sẽ trả về 0, như vậy thì yêu cầu của bài toán đã không còn đúng nữa. Có 2 loại ép kiểu trong Java: Ép kiểu rộng và ép kiểu hẹp. Implicit Casting (Ép kiểu rộng/ Ép kiểu không tường minh). Chuyển từ kiểu có vùng lưu trữ nhỏ lên kiểu có vùng lưu trữ lớn hoặc về kiểu có cùng kiểu dữ liệu. Loại này không làm mất mát dữ liệu. Sơ đồ chuyển đổi như sau: byte → short → int → long → float → double Các kiểu dữ liệu byte và short được chuyển lên kiểu int. Nếu có một toán hạng có kiểu dữ liệu long thì toàn bộ biểu thức chứa toán hạng này sẽ được chuyển về kiểu long. Nếu có một toán hạng có kiểu dữ liệu float thì toàn bộ biểu thức chứa toán hạng này sẽ được chuyển về kiểu float. Nếu có một toán hạng có kiểu dữ liệu doublethì toàn bộ biểu thức chứa toán hạng này sẽ được chuyển về kiểu double. Ví dụ /* * Ép kiểu rộng */ int numTypeInt = 100; long numTypeLong = numTypeInt; // Ép kiểu từ int sang long float numTypeFloat = numTypeLong; // Ép kiểu từ long sang float System.out.println("Giá trị biến kiểu int = " + numTypeInt); System.out.println("Giá trị biến kiểu long = " + numTypeLong); System.out.println("Giá trị biến kiểu float = " + numTypeFloat); Kết quả: Explicit Casting (Ép kiểu hẹp/ Ép kiểu tường minh).
Chuyển từ kiểu có vùng lưu trữ lớn về kiểu có vùng lưu trữ nhỏ. Loại này có thể làm mất mát dữ liệu. Sơ đồ chuyển đổi như sau: double → float → long → int → short → byte Lưu ý: Khi ép kiểu dữ liệu chúng ta phải thật sự cẩn thận nếu không sẽ làm ảnh hưởng đến kết quả của toàn bộ bài toán. Ví dụ ép kiểu hẹp /* * Ép kiểu hẹp */ double douValue = 218.04; long longVal = (long) douValue; // Ép từ kiểu double về long int intVal = (int) longVal; // Ép từ long về int System.out.println("Giá trị biến double = " + douValue); System.out.println("Giá trị biến long = " + longVal); System.out.println("Giá trị kiểu int = " + intVal); Kết quả: