พิจารณาคลาสทดสอบอย่างง่าย:
import java.math.BigDecimal;
/**
* @author The Elite Gentleman
*
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BigDecimal x = new BigDecimal("1");
BigDecimal y = new BigDecimal("1.00");
System.out.println(x.equals(y));
System.out.println(x.compareTo(y) == 0 ? "true": "false");
}
}
คุณสามารถ (รู้ตัว) ว่านั่นx
เท่ากับy
(ไม่ใช่การอ้างอิงวัตถุ) แต่เมื่อคุณรันโปรแกรมผลลัพธ์ต่อไปนี้จะแสดง:
false
true
คำถาม: อะไรคือความแตกต่างระหว่างcompareTo()
และequals()
ในBigDecimal
สิ่งที่compareTo
สามารถตัดสินได้ว่าx
เท่ากับy
?
PS: ฉันเห็นว่า BigDecimal มีinflate()
วิธีการเกี่ยวกับequals()
วิธีการ อะไรinflate()
ทำจริง?
inflate()
: มันไม่ได้เป็นส่วนหนึ่งของ API สาธารณะเพราะเป็นเพียงการจัดการการแสดงภายในและไม่มีผลต่อ "นอก" ดังนั้นหากคุณไม่ต้องการศึกษาการใช้งานBigDecimal
เชิงลึกอย่างแท้จริงฉันขอแนะนำให้คุณละเว้นวิธีนี้