1. 程式人生 > >java程式設計語言基礎,扼要複習

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