Main content:
      Basic skills for working with data
      How to use Java classes for working with data types
      The formatted Invoice application
      How to use the BigDecimal class
              --------------
1. Basic skills for working with data:

- Định nghĩa biến: định nghĩa và khởi tạo giá trị


- Định nghĩa hằng:

- Các toán tử: 
        +, -, *, /, %, ++, --,  
        =, +=, -=, *=, /=, %=
- Ép kiểu: ép kiểu gầm và ép tường minh
   + ép kiểu gầm: ...
      Hợp lệ:
double d;
int c = 12345678;
d = c;

    Không hợp lệ:
int a;
double b = 30000000;
a = b;//ép ngầm không hợp lệ nhưng nếu ghi a = (int) b; là hợp lệ

ép tường minh: ...

2. How to use Java classes for working with data types:
- Sử dụng class NumberFormat để định dạng khi in các giá trị.
   import java.text.NumberFormat;
   
- Tạo đối tượng NumberFormat:
   NumberFormat currency = NumberFormat.getCurrencyInstance(Locale.US);//định dạngtiền tệ
NumberFormat percent = NumberFormat.getPercentInstance();      //Định dạng phần trăm
- In:
double total = 123;
double passed = 0.15;
System.out.println(currency.format(total));
System.out.print(percent.format(passed));
 Kết quả:

 - Sử dụng lớp Math:
   import java.lang.Math;

   Một số hàm:

Ví dụ:

- Sử dụng lớp Integer và Double:

3. The formatted Invoice application:

4. How to use the BigDecimal BigInteger class:
    Ví dụ 1:
import java.math.BigDecimal;

public class Main {
  public static void main(String[] argv) throws Exception {
    BigDecimal bd1 = new BigDecimal("123456789.0123456890");

    // Create via a long
    BigDecimal bd2 = BigDecimal.valueOf(123L);

    bd1 = bd1.multiply(bd2);
    System.out.println(bd1);
  }
}

    Ví dụ 2:
import java.math.*;

public class Big_Integer {
       public static void main(String[] args) {
              BigInteger a = new BigInteger("12345679");
              BigInteger b = new BigInteger("9");
              BigInteger c = a.multiply(b);
              System.out.println("Result: " + c);
       }
}

Bài tập:
1. Viết chương trình nhập vào một chuỗi và đảo chuỗi đó:
Ví dụ: nhập str="hello" in ra "olleh"

Bài giải:
import java.util.Scanner;

public class DaoChuoi {
public static void main(String[] args) {
              Scanner scan = new Scanner(System.in);
              System.out.print("nhap vao chuoi str = ");
              String str = scan.nextLine();
             
              System.out.print(DaoChuoi(str));
       }

       public static String DaoChuoi(String str)
       {
              String str_daochuoi = "";
              for(int i = str.length()-1; i >= 0; i--) {
                     str_daochuoi += str.charAt(i);
              }
              return str_daochuoi;
       }
}

2. Viết chương trình tính tổng các chữ số của số n nhập vào từ bàn phím.
Ví dụ: nhập n = 12345 in ra kết quả tổng các chữ số bằng 15
Bài giải: 
import java.util.Scanner;

public class TongChuSo {
       public static void main(String[] args) {
              Scanner scanner = new Scanner(System.in);
              System.out.print("Nhap n = ");
              int n = scanner.nextInt();
             
              System.out.println(TongChuSo(n));
       }

       public static int TongChuSo(int n)
       {
              int kq = 0;
              while (n > 0)
              {
                     kq += n % 10;
                     n = n / 10;
              }
              return kq;
       }
}

3. Viết chương trình sinh ra ngẫu nhiên n số tự nhiên khác nhau từng đôi một từ 0 đến n - 1.
Ví dụ: nhập n = 10, kết quả in ra: 9, 5, 3, 7, 1, 8, 6, 2, 0, 4
Gợi ýimport java.util.Random;
           Sử dụng hàm Random random = new Random(); và random.nextInt(n ) để sinh ra số tự nhiên từ 0 tới n.
Bài giải:
import java.util.Scanner;
import java.util.Random;

public class MangNgauNhien {
       public static void main(String[] args) {
             
              Scanner input = new Scanner(System.in);
              System.out.print("Nhập n = ");
              int n = input.nextInt();
             
              int a[] = new int[n];//Khởi tạo mảng
              for (int i = 0; i < n; i++) {
                     a[i] = i;
              }
             
              Random random = new Random();
              //Xáo trộn mảng
              for(int i = 0; i < n; i++) {
                     int x = random.nextInt(n - i);
                     int temp = a[x];
                     a[x] = a[n - i - 1];
                     a[n - i - 1] = temp;
              }
             
              //In mảng
              for(int i = 0; i < n; i++) {
                     System.out.print(a[i] + ", ");
              }
       }
}

4. Viết chương trình cộng hai số nguyên lớn (Hai chuỗi số). Không sử dụng tất cả lớp có sẵn trong java.
Ví dụ: nhập s1 = "123456789101112"
                    s2 =                           "13"
--> in kết quả:     "123456789101125" 
Bài giải:

5.