Thắc mắc về clone và định dạng số trong java

Mình có hai thắc mắc:

  1. Làm thế nào để định dạng tiền tệ ví du: 1,000,000.00 VND trong java.

  2. Liên quan đến clone trong dòng code sau:

     public class KhoiAB {
     public boolean equals(LopA other) {
        LopA temp = (LopA)this.clone();//được
        //LopA temp = (LopA)this//Không được;
        return (other.getName().trim().equals(temp.getName().trim()));
     } // clone ở đây có tác dụng gì?

Bạn có thể sử dụng number format hoặc Currencies

Code tham khảo
static public void displayNumber(Locale currentLocale) {

    Integer quantity = new Integer(123456);
    Double amount = new Double(345987.246);
    NumberFormat numberFormatter;
    String quantityOut;
    String amountOut;

    numberFormatter = NumberFormat.getNumberInstance(currentLocale);
    quantityOut = numberFormatter.format(quantity);
    amountOut = numberFormatter.format(amount);
    System.out.println(quantityOut + "   " + currentLocale.toString());
    System.out.println(amountOut + "   " + currentLocale.toString());
}
Out put
123,456   vi_VN
345,987.246   vi_VN

Hoặc

static public void displayCurrency( Locale currentLocale) {

    Double currencyAmount = new Double(9876543.21);
    Currency currentCurrency = Currency.getInstance(currentLocale);
    NumberFormat currencyFormatter = 
        NumberFormat.getCurrencyInstance(currentLocale);

    System.out.println(
        currentLocale.getDisplayName() + ", " +
        currentCurrency.getDisplayName() + ": " +
        currencyFormatter.format(currencyAmount));
}
Out put

French (France), Euro: 9 876 543,21 €
VietNam(Vietnamese), Dong: 9.876.543,21 VND/DONG
English (United States), US Dollar: $9,876,543.21

Source

Clone() : là một cách để tạo một bản sao của một đối tượng.
Tại sao phải dùng clone(); trong nhiều trường hợp để tiết kiệm tài nguyên, thay vì sử dụng new để tạo đối tượng mới.

Dòng lệnh này. Bạn ép kiểu đối tượng this trong (KhoiAB) sang (LopA) rồi lại clone chính nó. Mình nghĩ chương trình sẽ không chạy và có lỗi compile-time error

Không ép kiểu được thôi

Với đoạn code trên thì mình sẽ không hoàn toàn hiểu được, bạn cần up toàn bộ classs A và KhoiAB có liên quan

1 Like

chủ yếu là để mua việc thêm cho jvm vì cũng không có ý nghĩa nhiều lắm. Thay vì thế có thể dùng thẳng this thay cho clone ra temp luôn cũng được

Vậy bạn nghĩ đoạn clone kia có chạy không?

có thể chạy ngon hoặc có thể sinh exception, nhưng về mặt ý nghĩa thì trong trường hợp này là không có ý nghĩa

Có ý nghĩa đấy, quan trọng phải biết cái Clone() bạn ý đã modify chưa và đối tượng this là gì
nếu this trỏ tới đối tượng LopB() mà LopB() extends LopA() thì sao?

LopB b = new LopB("Đỗ Trung Quân");  // nó vẫn chạy bình thường
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?