Sử dụng package

Kiểu dữ liệu và Exceptions trong Java

Jim White

Java Developer

Package Java là gì?

  • Package tổ chức mã Java
    • Như thư mục hoặc directory
    • Gom nhóm mã liên quan (class, interface, enum, ...)
  • Giống thư mục
    • Mỗi package có một tên

Package Java giống thư mục và tủ hồ sơ để tổ chức mã

1 Image from https://commons.wikimedia.org/wiki/File:File_Cabinet.jpg
Kiểu dữ liệu và Exceptions trong Java

Các loại package

  • Package tích hợp
    • Một phần của Java
    • Tên bắt đầu bằng "java" hoặc "javax"
  • Package do người dùng định nghĩa
    • Package ta tự định nghĩa
    • Package từ bên thứ ba
Kiểu dữ liệu và Exceptions trong Java

Tên package

  • Quy ước đặt tên package
    • Viết thường toàn bộ
    • Dùng dấu chấm (.) để phân tách phần tên
  • Package tích hợp
    • Bắt đầu bằng java hoặc javax
    • Phần còn lại gợi ý mục đích
  • Package do người dùng đặt tên
    • Bắt đầu bằng phần đảo của domain tổ chức
    • Phần còn lại gợi ý chức năng
  • Ví dụ package tích hợp

    java.security
    java.time
    
  • Ví dụ package do người dùng đặt tên

    com.mycompany.myproject
    com.mycompany.myproject.account
    com.mycompany.myproject.controller
    com.mycompany.myproject.ui
    
Kiểu dữ liệu và Exceptions trong Java

Package tích hợp

Một số package tích hợp thường dùng

Package Chứa/Cung cấp
java.lang Các lớp hỗ trợ ngôn ngữ cơ bản
java.io Nhập / xuất
java.util.logging Khung ghi log
java.math Số học số nguyên và thập phân chính xác
java.net Mạng
java.util Ngày/giờ và cấu trúc dữ liệu như Linked List, Dictionary và hỗ trợ
java.security Khung bảo mật
Kiểu dữ liệu và Exceptions trong Java

java.math

  • java.math cung cấp các lớp cho số học
    • Dùng trong mật mã, khoa học và tiền tệ
  • BigInteger để biểu diễn số nguyên rất lớn
    • Lớn hơn phạm vi int hoặc long
    • Làm việc với số nguyên có gần như vô hạn chữ số.
  • BigDecimal để biểu diễn số thực rất lớn/nhỏ
    • Xử lý lỗi làm tròn của float hoặc double
Kiểu dữ liệu và Exceptions trong Java

Sử dụng package

  • Dùng import + tên package ở đầu tệp
import java.math.BigInteger;
public class HelloWorld {
  BigInteger acct = new BigInteger("123");
}
  • Package có thể chứa nhiều kiểu.
    • Dùng * để import tất cả các kiểu trong package
import java.math.*;
public class HelloWorld {
  BigInteger acct = new BigInteger("123");
  BigDecimal pi = new BigDecimal("3.14");
}
Kiểu dữ liệu và Exceptions trong Java

BigInteger & BigDecimal trong java.math

  • BigIntegerBigDecimal là wrapper cho số lớn
  • Tạo từ String hoặc số
  • Có các phương thức add, subtract, multiply, divide
  • Thêm phương thức như pow để lũy thừa
// Imports ở đầu lớp
import java.math.BigInteger;
import java.math.BigDecimal;

// Tạo BigInteger/BigDecimal bằng String
BigInteger big = new BigInteger("1000");
BigInteger ten = new BigInteger("10");
BigDecimal pi = new BigDecimal("3.14");
// Dùng primitive để tạo BigDecimal
BigDecimal one = new BigDecimal(1.0);
BigInteger x = big.add(ten); // = 1010
BigDecimal y = pi.add(one); // = 4.14
BigInteger bigSqr = big.pow(2); // = 1000000
BigDecimal piCubed = pi.pow(3); // = 30.959144
Kiểu dữ liệu và Exceptions trong Java

Phương thức của BigInteger và BigDecimal

Method Description
abs() Giá trị tuyệt đối của số nguyên
add(x) Cộng x vào số nguyên hoặc số thập phân
divide(x) Chia số nguyên hoặc số thập phân cho x
multiply(x) Nhân số nguyên hoặc số thập phân với x
negate() Đổi dấu số nguyên hoặc số thập phân
pow(int x) Lũy thừa x
subtract(x) Trừ x khỏi số nguyên hoặc số thập phân
1 See https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html and https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html
Kiểu dữ liệu và Exceptions trong Java

Không cần import

  • Lưu ý: package java.lang được import tự động.
    • Dùng bất kỳ thành phần nào từ java.lang không cần import
  • java.lang gồm System, String, các wrapper class và Exception.
    • Giải thích vì sao có thể học và dùng các phần cơ bản mà không thấy import.
Kiểu dữ liệu và Exceptions trong Java

Ayo berlatih!

Kiểu dữ liệu và Exceptions trong Java

Preparing Video For Download...