2012/11/15
最近諸多的雜務,讓自己又中斷了兩個多月沒有進行 Java基礎的練習
希望能讓技術根基穩固,就應該從基礎仔細鑽研吧
覺得有些慶幸,有用Blog將一些基本執行,會碰到的問題記錄下來
讓自己能很快抓回編譯程式、正常執行的感覺
ch8.1.2
主要再講Exception有多個架構
Ex InterruptedException , ClassCastExecption , IOException
不同的Exception , 要依照其架構、層級,分別去接收與處理
而在Java SE7 可以一次判斷多個catch狀況 利用"Multi-cath"的語法進行判讀
2012/11/17
ch8 Q1
要拋出 IllegalArgumentException
可利用
try {
if( value > 0) {
.... // your code
} else {
throw new IllegalArgumentException("your message");
.... // your code
}
} catch (IllegalArgumentException ex) {
System.out.println(" something ");
ex.printStackTrace(); //追蹤在哪丟出exception的
throw ex; //若沒throw ex , printStackTrace()會看接了幾次exception , 就印出幾次訊息 , 例如:input有5筆 , 其中3筆是小於0的 , 就會印出 三次"something"和 java.lang.IllegalArgumentException: in line XX
}
2012/11/18
p.9-12
在HashSet()内的物件
1. 若沒有特別規定,會按照輸入的順序排序
2. 但若有計算hashCode的值 , 則會以hashCode的值為依據排序 , 若hashCode相同 , 再以輸入的順序排列 (?) 實測結果似乎有點不一樣
p.9-13
interface Goal {
void execute();
}
public class ReuqestQueue {
public static void main(String[] args) {
Queue myQ = new LinkedList();
for (int i = 1; i < 6; i++)
{ myQ.offer(new Goal() // 在 Queue物件中 , 創一個物件Goal , Goal內有一個method execute()
{
public void execute() {
System.out.printf("Test");
}
}
);
}
process(myQ);
}
private static void process(Queue requests) {
while(myQ.peek() != null) {
Goal request = (Goal) myQ.poll();
myQ.execute();
}
}
}
p4-17 reveiew
Compiler Sugar
比較兩個物件的實際內容值是否相同應該用 equals() ,而不該用== 或!= 來比較(==或!=是Object reference的比較)
2012/11/19
p9-31
properties物件 , 例如:
Properties props = new Properties();
props.load(new FileInputStream("myFile.txt"));
此時, 若是此java檔(pro.java)歸屬於 package mm.local
資料夾路徑為 c:\ch9\practice\src
而Java檔位於 c:\ch9\practice\src\mm\local\pro.java
在c:\ch9\practice\src下 , 編譯時輸入
step1 javac -encoding UTF-8 mm\local\pro.java
step2 java mm.local.pro
要注意的是!! myFile.txt要放在c:\ch9\practice\src 這個路徑下
除非Java檔沒有設package , 且在編譯時是在c:\ch9\practice\src\mm\local 路徑下執行 , 則 myFile.txt檔才可和pro.java檔放在同目錄下
(否則Java編譯時會找不到myFile.txt)
p.9-33
public static void main(String[] args) {
Properties props = System.getProperties();
System.out.println(props.getProperty("java.version")); //此寫法可印出Java Runtime Environment(JRE)的版本
System.out.println(props.getProperty("java.home")); //此寫法可印出Jvava 安裝的路徑
}