Quangkhoi1228 | Knowledge base
  • Về trang chủ
  • Lời nói đầu
  • Nhập môn lập trình web
    • Giáo trình
    • Class 01: Hello HTML!!!
    • Class 02: HTML: Comment, Text formatting, Attribute, Link
    • Class 03: HTML: Style, Inline/Block element, Image
    • Class 04: HTML: List, Table, Responsive
    • Class 05: Hello CSS!!!
    • Class 06: CSS: Flexbox, Layout
    • Class 07: Hello Javascript!!!
    • Class 08: JS: Operator, Expression, For/While Loop, Function
    • Class 09: JS: Search Function
    • Project 1: Layout Structure
    • Project 2: Search Function
    • Project 3: MVP
    • Review "Lập trình Frontend Website"
  • Lập trình Frontend Website
    • Class 01: Ôn tập HTML
    • Class 02: Thảo luận HTML
    • Class 03: Ôn tập CSS
    • Class 04: Chrome dev tools, CSS Box Model
    • Class 05: CSS: Position, Đơn vị đo
    • Class 06: CSS: hiệu ứng, responsive
    • Class 07: Thảo luận CSS
    • Class 08: Ôn tập JS
    • Class 09: JS: Mảng, Đối tượng, Biến tham chiếu và tham trị
    • Class 10: JS: Class, Pair programming
    • Class 11: JS: DOM, UI Rendering
  • Lập trình ReactJS
    • Class 01: Giới thiệu ReactJS
    • Class 01: Tạo dự án ReactJS mới
    • Class 02: ReactJS Component
    • Class 02: Import/Export component
    • Class 03: useState hook
    • Class 04: Project 1: UI cơ bản
    • Class 05: Render có điều kiện và danh sách
    • Class 06: useEffect hook
    • Class 07: Project 2: Xử lý user logic
    • Class 08: Project 3: Hoàn thiện dashboard
    • Class 09: Form và dữ liệu người dùng
    • Class 10: UseRef và thao tác với DOM
    • Class 11: Project 4: Xử lý form data
    • Class 12: Project 5: Hoàn thiện form data
    • Class 13: useMemo và useCallback
    • Class 14: Custom Hook
    • Class 15: Project 6: Hoàn thiện project
    • Class 16: Ôn tập
  • Lập trình NestJS
    • Class 01: Giới thiệu NestJS & Cài đặt dự án
    • Class 02: Routing, Controller và Dependency Injection
    • Class 03: Service và Data Validation
    • Class 04: Kết nối Database với TypeORM
    • Class 05: Quan hệ trong Database (OneToMany, ManyToOne) với TypeORM
    • Class 06: Middleware, Interceptor, Guard
    • Class 07: Authentication – JWT
    • Class 08: Authorization – Phân quyền
    • Class 09: File Upload & Configuration
    • Class 10: Giới thiệu WebSocket
    • Class 11: Project 1
    • Class 12: Project 2
    • Class 13: Project 3
    • Class 14: Project 4
    • Class 15: Project 5
    • Class 16: Project 6
  • Lập trình Java cơ bản
    • Class 01: Khai giảng
    • Class 02: Hello Java
    • Class 03: Biến và kiểu dữ liệu
    • Class 04: Toán tử và biểu thức
    • Class 05: Câu lệnh điều kiện
    • Class 06: Review 1
    • Class 07: Vòng lặp For
    • Class 08: Vòng lặp While / Do-while
    • Class 09: Java Method
    • Class 10: Review 2
    • Class 11: Java User Input
    • Class 12: Java File
    • Class 13: Final Exam 1
    • Class 14: Final Exam 2
    • Review "Lập trình OOP với Java"
  • Lập trình OOP với Java
    • Class 01: Hello OOP
    • Class 02: Class Attribute và Method
    • Class 03: Constructor, Modifier và Package
    • Class 04: Review 1
    • Class 05: Tính kế thừa và đa hình
    • Class 06: Tính trừu tượng và đóng gói
    • Class 07: Review 2
    • Class 08: Final Exam 1
    • Class 09: Final Exam 2
    • Review "CTDL và Giải thuật với Java"
  • CTDL và Giải thuật với Java
    • Class 01: Hello Data Structure
  • HTML
    • Cài đặt công cụ cơ bản
    • HTML là gì?
    • Phần tử HTML
    • Cấu trúc file HTML cơ bản
    • Comment trong HTML
    • Format văn bản trong HTML
    • Thuộc tính HTML
    • Liên kết(link) trong HTML
    • Project: Professional Email
    • HTML Style
    • Phần tử Inline và Block
    • HTML Image
    • HTML List
    • HTML Table
    • Head trong HTML
    • HTML Responsive
    • Project: Online Cover Letter
  • CSS
    • Giới thiệu CSS
    • CSS Selector
    • Thêm CSS vào trang
    • Comment trong CSS
    • Màu sắc trong CSS
    • CSS Background
    • CSS Border
    • CSS Spacing
    • CSS Flexbox
    • HTML Layout
    • Chrome dev tools
    • CSS Box Model
    • CSS Position
    • Đơn vị đo trong CSS
    • CSS Pseudo-classes
    • CSS Responsive
  • JavaScript
    • Giới thiệu Javascript
    • Thêm JS vào trang
    • Các hàm có sẵn
    • Biến và kiểu dữ liệu
    • JS Mảng
    • JS Đối tượng
    • JS Biến Tham Chiếu và Tham Trị
    • Toán tử và biểu thức
    • Câu lệnh điều kiện
    • Vòng lặp For / While
    • Hàm (Function)
    • Chức năng tìm kiếm với JS và DOM
    • JS Class
    • JS DOM
    • JS Dom Rendering
  • Java
    • Giới thiệu Java
    • Chương trình Hello world
    • Phân biệt JVM, JRE, JDK
    • Java Comment
    • Biến trong Java
    • Kiểu dữ liệu trong Java
    • Java Array
    • Toán tử trong Java
    • Biễu thức trong Java
    • Java If-else
    • Java Switch
    • Vòng lặp For trong Java
    • Vòng lặp While trong Java
    • Vòng lặp Do-while trong Java
    • Java Method
    • Java OOP
    • Java Class và Object
    • Java Class attribute
    • Java Class method
    • Java Constructor
    • Java Modifier
    • Java Package
    • Java Tính kế thừa
    • Java Tính đa hình
    • Java Tính trừu tượng
    • Java Tính đóng gói
    • Java User Input
    • Java File
  • Soft skills
    • Pair Programming
  • Web design and wireframe
  • NextJS
    • Tạo dự án NextJS mới
  • NestJS
    • Giới thiệu NestJS
    • NestJS controller
    • NestJS module
  • Git
    • Setup SSH key với GitHub
  • Bash
    • Giới thiệu Bash/Shell Script
  • Wordpress
    • Thêm custom routes
    • Deploy with ubuntu
  • Deployment
    • SSH server, đổi password và add SSH key
    • Tạo user mới và add SSH key
    • Page
  • GitBook
    • Custom domain with CloudFlare
  • Hướng dẫn khác
    • Gitbook custom domain with Cloudflare
    • Cấu hình OpenVPN
    • Cấu hình và lấy SSH key
    • Công cụ lập trình
      • Visual Studio Code
      • Cài đặt IntelliJ IDEA
    • Đường dẫn file trong HTML
    • CI/CD github action
  • Project: CV online
Powered by GitBook
On this page
  • Các Kiểu Dữ Liệu thường gặp
  • Chuyển Đổi Kiểu Dữ Liệu
  • Bài Tập Thực Hành
  • Kết Luận
  1. Java

Kiểu dữ liệu trong Java

Giới thiệu về Kiểu Dữ Liệu

Trong Java, kiểu dữ liệu (data type) xác định loại và kích thước của dữ liệu mà một biến có thể lưu trữ. Java là ngôn ngữ có kiểu dữ liệu tĩnh, có nghĩa là kiểu của một biến phải được xác định tại thời điểm biên dịch và không thể thay đổi trong suốt quá trình thực thi chương trình.

Các Kiểu Dữ Liệu thường gặp

Java hỗ trợ các kiểu dữ liệu nguyên thủy sau đây:

Kiểu Dữ liệu
Kích thước
Mô tả

byte

1 byte

Lưu trữ số nguyên từ -128 đến 127

short

2 byte

Lưu trữ số nguyên từ -32,768 đến 32,767

int

4 byte

Lưu trữ số nguyên từ -2,147,483,648 đến 2,147,483,647

long

8 byte

Lưu trữ số nguyên từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807

float

4 byte

Lưu trữ số thập phân. Đủ để lưu trữ từ 6 đến 7 chữ số thập phân

double

8 byte

Lưu trữ số thập phân. Đủ để lưu trữ 15 chữ số thập phân

boolean

1 bit

Lưu trữ giá trị true hoặc false

char

2 byte

Lưu trữ một ký tự / chữ cái hoặc giá trị ASCII

String

Kiểu dữ liệu String được sử dụng để lưu trữ một chuỗi ký tự (văn bản). Giá trị chuỗi phải được bao quanh bởi dấu ngoặc kép ""

Ví dụ về Các Kiểu Dữ Liệu Nguyên Thủy

public class KieuDuLieu {
    public static void main(String[] args) {
        byte soNho = 10;
        short soNgan = 1000;
        int soNguyen = 100000;
        long soLon = 1000000000L;

        float diemTrungBinh = 8.5f;
        double pi = 3.14159;

        char kyTu = 'A';
        boolean laDung = true;
        String myName = "Khôi"

        System.out.println("Byte: " + soNho);
        System.out.println("Short: " + soNgan);
        System.out.println("Int: " + soNguyen);
        System.out.println("Long: " + soLon);
        System.out.println("Float: " + diemTrungBinh);
        System.out.println("Double: " + pi);
        System.out.println("Char: " + kyTu);
        System.out.println("Boolean: " + laDung);
        System.out.println("String: " + myName);
    }
}

Chuyển Đổi Kiểu Dữ Liệu

Java hỗ trợ chuyển đổi kiểu dữ liệu ngầm định và tường minh giữa các kiểu dữ liệu.

Trong Java, có hai loại casting:

  1. Widening Casting (tự động): chuyển đổi từ kiểu dữ liệu nhỏ hơn sang kiểu dữ liệu lớn hơn:

byte -> short -> char -> int -> long -> float -> double

  1. Narrowing Casting (thủ công): chuyển đổi từ kiểu dữ liệu lớn hơn sang kiểu dữ liệu nhỏ hơn:

double -> float -> long -> int -> char -> short -> byte

Chuyển Đổi Tự động

Chuyển đổi ngầm định xảy ra khi một giá trị của kiểu dữ liệu nhỏ hơn được chuyển đổi sang kiểu dữ liệu lớn hơn mà không cần sự can thiệp của lập trình viên.

public class ChuyenDoiKieuDuLieu {
    public static void main(String[] args) {
        int soNguyen = 10;
        double soThuc = soNguyen;  // Chuyển đổi ngầm định từ int sang double

        System.out.println("Số nguyên: " + soNguyen);
        System.out.println("Số thực: " + soThuc);
    }
}

Chuyển Đổi Thủ Công

Chuyển đổi tường minh xảy ra khi một giá trị của kiểu dữ liệu lớn hơn được chuyển đổi sang kiểu dữ liệu nhỏ hơn, yêu cầu sự can thiệp của lập trình viên.

public class ChuyenDoiKieuDuLieuTuongMinh {
    public static void main(String[] args) {
        double soThuc = 9.78;
        int soNguyen = (int) soThuc;  // Chuyển đổi tường minh từ double sang int

        System.out.println("Số thực: " + soThuc);
        System.out.println("Số nguyên: " + soNguyen);
    }
}

Bài Tập Thực Hành

  1. Khai báo và khởi tạo các biến với tất cả các kiểu dữ liệu.

  2. Viết chương trình chuyển đổi thủ công và tự động giữa các kiểu dữ liệu.

Bài Tập 1: Khai báo và Khởi tạo Biến

Khai báo các biến với các kiểu dữ liệu nguyên thủy và khởi tạo chúng với các giá trị tùy ý.

Bài giải
public class KieuDuLieuNguyenThuy {
    public static void main(String[] args) {
        byte b = 10;
        short s = 200;
        int i = 30000;
        long l = 4000000L;

        float f = 5.75f;
        double d = 19.99;

        char c = 'A';
        boolean bool = true;

        System.out.println("Byte: " + b);
        System.out.println("Short: " + s);
        System.out.println("Int: " + i);
        System.out.println("Long: " + l);
        System.out.println("Float: " + f);
        System.out.println("Double: " + d);
        System.out.println("Char: " + c);
        System.out.println("Boolean: " + bool);
    }
}

Bài Tập 2: Chuyển Đổi Kiểu Dữ Liệu

Viết chương trình thực hiện chuyển đổi ngầm định từ int sang double và chuyển đổi tường minh từ double sang int.

Bài giải
public class ChuyenDoiKieu {
    public static void main(String[] args) {
        int soNguyen = 10;
        double soThuc = soNguyen;  // Chuyển đổi ngầm định

        double soThucKhac = 9.78;
        int soNguyenKhac = (int) soThucKhac;  // Chuyển đổi tường minh

        System.out.println("Số nguyên: " + soNguyen);
        System.out.println("Số thực (ngầm định): " + soThuc);
        System.out.println("Số thực: " + soThucKhac);
        System.out.println("Số nguyên (tường minh): " + soNguyenKhac);
    }
}

Kết Luận

Kiểu dữ liệu là một khái niệm cơ bản nhưng cực kỳ quan trọng trong lập trình Java. Việc hiểu và sử dụng đúng cách các kiểu dữ liệu giúp bạn viết mã hiệu quả và tránh được nhiều lỗi trong quá trình lập trình. Thông qua bài giảng này, bạn đã biết cách sử dụng các kiểu dữ liệu nguyên thủy, kiểu dữ liệu tham chiếu, cũng như cách chuyển đổi giữa các kiểu dữ liệu khác nhau. Hãy thực hành thêm để nắm vững kiến thức này!

PreviousBiến trong JavaNextJava Array

Last updated 1 year ago