Lập trình Java cơ bản

Bài 6: Các kiểu dữ liệu trong Java

Trong các bài trước, mình đã hướng dẫn các bạn về những vấn đề cơ bản nhất trước khi học lập trình với Java. Ở bài này, chúng ta sẽ tìm hiểu về một khái niệm rất quan trọng trong Java đó là các kiểu dữ liệu trong Java.

1. Kiểu dữ liệu trong Java

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( định danh ở đây bao gồm tên biến, phương thức, tên lớp, Interface và tên Package). Có 2 kiểu dữ liệu thường gặp tron Java đó là Primitive data (kiểu dữ liệu cơ sở) và Wrapper class.
Primitive data: Có 8 kiểu dữ liệu gốc đượ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.
Wrapper Class: Trong Java, ứng với mỗi kiểu dữ liệu cơ sở thì chúng ta sẽ có một kiểu dữ liệu Wrapper class, sở dĩ chúng ta gọi kiểu dữ liệu này là Wrapper class là vì nó "gói" các kiểu dữ liệu cơ sở vào trong một đối tượng của nó. Vì vậy, Wrapper class là kiểu dữ liệu vừa có thể lưu trữ giá trị đơn và vừa có thêm các phương thức khác. 
- Lớp Byte là lớp Wrapper cho kiểu dữ liệu byte.
- Lớp Short là lớp Wrapper cho kiểu dữ liệu short.
- Lớp Integer là lớp Wrapper cho kiểu dữ liệu int.
- Lớp Long là lớp Wrapper cho kiểu dữ liệu long.
- Lớp Float là lớp Wrapper cho kiểu dữ liệu float.
- Lớp Double là lớp Wrapper cho kiểu dữ liệu double.
- Lớp Character là lớp Wrapper cho kiểu dữ liệu char.
- Lớp Boolean là lớp Wrapper cho kiểu dữ liệu boolean.
Vậy tại sao phải dùng Wrapper Class? Đó là bởi các lớp Wrapper sẽ giúp chúng ta chuyển đổi qua lại giữa một kiểu dữ liệu nguyên thủy sang kiểu dữ liệu đối tượng và ngược lại. Trong nhiều trường hợp, ví dụ như sử dụng ArrayList, List,.. thì đều sử dụng các tập hợp kiểu dữ liệu đối tượng thay vì nguyên thủy nên sử dụng Wrapper Class là điều bắt buộc. Ngoài ra, các kiểu đối tượng còn chứa nhiều phương thức thuận tiện để lập trình hiệu quả hơn.

2. Ép kiểu (Type Casting) trong Java.

Ép kiểu trong Java là việc gán giá trị của một biến có kiểu dữ liệu này tới biến khác có kiểu dữ liệu khác.
Ví dụ:
float a=15.5f;
int b=(int)a+5;
Trong Java, có hai loại ép kiểu dữ liệu đó là 
  • Nới rộng (widening): 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.
  • Thu hẹp (narrowwing): 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.
Ví dụ về Widening:
package com.company.bkitsoftware;

public class WideningDemo {
    public static void main(String[] args) {
        int a = 10;
        long b = a;     // chuyển từ kiểu dữ liệu integer lên kiểu long
        float c = b;    // chuyển từ kiểu dữ liệu long lên kiểu float
        System.out.println("Giá trị biến a = " + a);
        System.out.println("Giá trị biến b = " + b);
        System.out.println("Giá trị biến c = " + c);
    }
}
Kết quả thu được:
Giá trị biến i = 10
Giá trị biến l = 10
Giá trị biến f = 10.0
Ví dụ về Narrowwing:
package com.company.bkitsoftware;

public class NarrowwingDemo {
    public static void main(String[] args) {
        double a = 10.123;
        long b = (long) a; // Chuyển từ kiểu dữ liệu double xuống kiểu long
        int c = (int) b; // Chuyển từ kiểu dữ liệu long xuống kiểu int

        System.out.println("Giá trị a: " + a);
        System.out.println("Giá trị b: " + b);
        System.out.println("Giá trị c:  " + c);
    }
}
Kết quả thu được:
Giá trị Double: 10.123
Giá trị Long: 10
Giá trị Int:  10
Trong bài này, mình đã giới thiệu đến các bạn về khái niệm kiểu dữ liệu trong Java và 2 cách ép kiểu dữ liệu thường dùng (ép kiểu rộng và ép kiểu hẹp). Bài tiếp theo, chúng ta sẽ tìm hiểu về khái niệm biến trong Java.

Danh sách bài học