java程式設計語言基礎,扼要複習
歸類
型別檢查
編譯時:C,C++,Java,Go
執行時:python,Perl,JavaScript,Ruby
執行/編譯
編譯為機器程式碼執行:C,C++
編譯為中間程式碼,在虛擬機器上執行,java,C#
解釋執行:Python,Perl,JavaScript
程式設計正規化(programming paradigm)
面向物件:Java,C#,C++,Scala
面向過程:C,vb
函式式:Hashkell
資料型別(java)
boolean,byte,char
short,int,long,float,double
String,Enum,Array
Object...
整數型別
32位int的範圍?
-2^31 ~ 2^31-1
補碼
取反加1
例:-1
0000…1 -> 取反 -> 1111…0 -> +1 -> 1111...1
1000…0 -2^31
1111…1 -1
0000…0 0
0111…1 2^31-1
-1 + 1= 0
1111…1 + 0000…1 = 0000…0
唯一表示0,沒有+0,-0
總共表示2^32
浮點數與定點數
浮點數 (+/-)1.xxx*2^y
符號位|指數部分|基數部分
64位double範圍:+/-10^308
64位double精度:10^15
浮點數比較
a==b?
Mmath.abs(a-b)<eps?
使用BigDecimal算錢
primitive type vs Object
primitive type(值型別):int,long,float..
Object(引用型別):Integer,Long,Float,String...
值型別,用a==b判斷相等
引用型別,用a==b判斷是否為同一個Object
用a.equals(b)[這個a需要判斷是否為null],或Objects.equals(a,b)判斷是否相等
Boxing and Unboxing
Integer a = 2; //boxing
Integer b = new Integer(2); //顯示boxing
int v = a.intValue(); //unboxing
new Integer(2) ==2? y
new Integer(2)==new Integer(2)? n
Integer.valueOf(2)==Integer.valueOf(2)? y
Integer.valueOf(1000)==Integer.valueOf(1000)? n 由系統決定,可能相等,可能不想等
Integer.valueOf(2).intValue()==2? y
new Integer(2).equals(new Integer(2))? y