標籤

二元樹 (1) 字串常數池 (1) 投資 (3) 每月損益 (37) 例外處理 (1) 泛型 (2) 股票 (15) 指標 (5) 英文 (8) 基本資料型別 (1) 期貨 (1) 程式交易 (10) 量化投資 (5) 亂亂寫 (3) 概念 (3) 資料結構 (3) 演算法 (3) 數學 (3) 轉型 (1) AMA (1) ArrayList (1) assert (1) BeautifulSoup (1) C/C++ (8) casting (1) ClassCastException (1) classpath (1) Collection (4) Comparable (1) comparTo() (1) constructor (1) database (3) Debian (1) Dropbox (2) EA (2) enum (1) equals() (2) exception (3) extends (1) ffmpeg (1) final (1) Git (1) HashMap (1) HashSet (1) hasNext() (1) HTS (3) instanceof (1) IS-A (1) Iterator (1) JAVA (43) length (1) Linux (31) List (1) Mac (6) Map (1) ML (2) MT4 (6) MySQL (2) next() (1) NullPointerException (1) Number (1) Numpy (2) OpenCart (1) OpenCV (3) OSX (1) overloading (1) overriding (3) pandas (2) PHP (8) PriorityQueue (1) Python (11) Queue (1) random() (1) reverse() (1) Samba (1) SCJP (21) sqrt() (1) synchronized (1) talib (1) ufw (1) uTorrent (1) var-args (2) VHF (1) vim (2) Yhoo知識+ (4)

2012年11月21日 星期三

SCJP通過了

雖然早已不叫SCJP了,但,管它的!通過了好爽啊,而且還是100%PASS,真是出乎我意料。
我覺得我太幸運了,題目都給的很簡單,我最弱的泛型、IO、指令跟集合(這不是全部了嗎?)幾乎都沒出,太感謝了!(感謝誰?)
考試當中還有個小插曲:當我緊張的做完第一題時,不知道去按到什麼鍵,系統竟然問我是否真的要結束測驗?幹,當時我尿都快出來1cc了,還好沒有手殘去按到Yes,不然我就要在裡面哭29分鐘了…

2012年11月18日 星期日

assert後面的判斷式

assert後面要接判斷式;
若判斷式為true,則沒事;若false,則丟出AssertionError。

*Error不用去處理。

2012年11月10日 星期六

覆寫函式的可控式例外

覆寫規則其中一條是:不能宣告範圍更大或新的exception。
2012.11.18補充:除非新的exception為RuntimeException或其子類別。

例1:

class A{
    A length(){return this;}
}
class Test1 extends A{
        Test1 length()throws NullPointerException{ return this;}

        public static void main(String[] args){
                System.out.println(new Test1().length());
        }
}
------------
Test1@57f0dc

說明:
Test1 length()throws NullPointerException{ return this;}:劃線為合法,因為可宣告回傳型別為父函式的子型別;又因為父函式未宣告exception,所以表示父函式可能丟出任何exception,而NullPointerException為exception的子類別,符合覆寫規則。
證明:
class A{A length()throws NullPointerException{return this;}}
class Test1 extends A{
        Test1 length()throws Exception {return this;}
        public static void main(String[] args){
                System.out.println(new Test1().length());
        }
}
---------------
Test1.java:4: length() in Test1 cannot override length() in A; overridden method does not throw java.lang.Exception
Test1 length()throws Exception {return this;}
              ^

例2:
class MyException extends Exception{}
class A{A length(){return this;}}
class Test1 extends A{
        Test1 length()throws MyException {return this;}
        public static void main(String[] args){
                System.out.println(new Test1().length());
        }
}
----------------
Test1.java:4: length() in Test1 cannot override length() in A; overridden method does not throw MyException
Test1 length()throws MyException {return this;}
              ^
不能丟新的exception。不過明明MyException就有繼承Exception啊,為何還是無法通過編譯呢?

2012.11.18更新
上面觀念錯了,在此重新𨤳淸:
一個覆寫的函式的確不能丟出範圍比父函式要大的例外。
只有一種可以:RuntimeException(包含其子類別)可以由子函式丟出。因為RuntimeException為非可控式例外(unchecked exception)不用去處理;基本上無視它就是了。
所以上面例1的Test1 length()throws NullPointerException{ return this;},NullPointerException為RuntimeException的子類別,所以子函式雖然有宣告,但編譯器無視它,當做沒這回事,當然就能順利編譯。但例2的Test1 length()throws MyException {return this;},MyException為Exception的子類別,非屬於RuntimeException,所以編譯無法通過。

2012年11月6日 星期二

基本資料的型別不同可以比較耶


public class Test1{
        public static void main(String[] args){
                float f = 1f;
                long lo = 1;
                int in = 1;
                double d = 1.0;
                if(f == lo)     System.out.println("1.0==1");
                if(in == d)     System.out.println("1==1.0");
        }
}

------------
1.0==1
1==1.0

應該是做比較的時候會將小型別自動轉型成比較大的那個型別吧。

2012年11月5日 星期一

關於final

1、final類別不能被繼承。
2、final函式不能被覆寫(可繼承)。
3、final變數一定要給初始值,且不能被修改。

2012年11月1日 星期四

關於轉型

轉型是轉參考變數的型別,不是轉物件。