單精度和雙精度的問題
單精度表示有效位數是7位
雙精度表示有效位數是16位
public class precitionDemo { public static void main(String[] args) { float f = 123.123456789f; double d = 12345678.123456789; System.out.println(f); System.out.println(d); } }
運行結果:
123.12346 1.234567812345679E7 |
隨之而來的就是損失精度的問題
++i 和 i++問題
int i = 1; int j; j = i++; // 先賦值,再運算 System.out.println("i:" + i +"\t"+ "j:" + j);
運行結果:
i:2j:1 |
== 和equals()問題
==:是用來判斷兩個對象的地址是否相同,即是否是指相同一個對象。比較的是真正意義上的指針操作。
equal:是用來比較兩個對象內部的內容是否相等的.
public class Object { public boolean equals(Object obj) { return (this == obj); //object類中的equals方法直接返回==的結果 } }
由於所有的類都是繼承自java.lang.Object類的,所以如果沒有對該方法進行覆蓋的話,
調用的仍然是Object類中的方法,而Object中的equal方法返回的卻是==的判斷,
因此,如果在沒有進行該方法的覆蓋後,調用該方法是沒有任何意義的。
在java面向對象的處理中我們一般在javabean中都要選擇重寫equals方法,
static final和transient
static表示"全局"/"靜態"的意思,用來修飾成員變量和成員方法,以及代碼塊,獨立於該類的任何對象,在類被虛擬機加載的時候加載進內存,可以由類直接調用.
更加完整的分析相見: http://www.cnblogs.com/dolphin0520/p/3799052.html
關於final關鍵字: http://www.cnblogs.com/dolphin0520/p/3736238.html