發表文章

「Java」「extends & method」 Chapter3 Question4

Given: public class Test4 { public static void main(String[] args) { Employee e1 = new Employee(); System.out.println(e1.getDepartment());// stuff Employee e2 = new Manager(); System.out.println(e2.getDepartment());// stuff Employee e3 = new GeneralManager(); System.out.println(e3.getDepartment());// GeneralManager Employee e4 = new CEO(); System.out.println(e4.getDepartment());// CEO // Manager m1 = new Employee();//編譯錯誤: 子=父 // System.out.println(m1.getDepartment()); Manager m2 = new Manager(); System.out.println(m2.getDepartment());// stuff Manager m3 = new GeneralManager(); System.out.println(m3.getDepartment());// GeneralManager Manager m4 = new CEO(); System.out.println(m4.getDepartment());// CEO // GeneralManager g1 = new Employee();//編譯錯誤: 子=父 // System.out.println(m1.getDepartment()); //GeneralManager g2 = new Manager();////編譯錯誤: 子=父 //System.out.println(m2.getDepartment()); GeneralManager g3 = new GeneralManager(); Syste...

「Java」「abstract」 Chapter3 Question3

Given: public class Test4 { public static void main(String[] args) { Beef b = new Beef(); Beef b1 = new Buffulo(); System.out.println(b+" "+b1); } } class Meat{ //錯誤必須改成 abstract class Meat{ abstract String colour();//該abstract方法,子類別必須實作,抽象方法是沒有body String size(){ //該物件方法不須abstract,子類別依需求實作。有內容的不可為抽象方法。 return "big"; } class Beef extends Meat{ String colour() { return "red-Beef"; } } class Buffulo extends Beef{ String colour() { return "red-Buffulo"; } } Answer: Compliation fails 因具備abstract的方法,其類別也必須是abstract類別。

「Java」「equals」 Chapter3 Question2

Given: public class Test2 { public static void main(String [] args) { Test t1 = new Test(10); Test t2 = new Test(10); Test t3 = new Test(30); System.out.println(t1.equals(t2)); System.out.println(t2.equals(t3)); System.out.println(t2.equals(t2)); } } class Test{ private int a ; public Test(int aa) { this.a=aa; } public int hashcode() { return a+42; } public boolean equals(Object obj) { return (this==obj)?true:super.equals(obj); } } Answer: false false true 當改寫 equlas 也須覆寫 hashcode, 此為必要條件. 在java裡,只有【傳值】,沒有【傳址】。不論基本型態變數或參考變數,都是複製它們的位元樣式 給另一個變數 。 所以當參考變數在使用==做比較時,是指兩物件是否有同時參考(指向)在heap(堆積)內的物件,也就是兩個參考變數是否存放相同的記憶體位址(位元樣式)。 如下: return (this==obj)?true:super.equals(obj); ---------------------------------------------------------------------- equals(Object obj) equals()是用在兩物件比較是否儲存相同的內容值,以 Integer i1 = new Integer(6); Integer i2 = new Integer(6); i1.equals(i2); 無疑地,一定是true。 因為wrapper class有實作equals,所以可用來比較兩wrapper object是否存放相同的內容值; 而S...

「Java」「Overriding」 Chapter3 Question1

圖片
Given: public class Test4 { public static void main(String[] args) { new FlyFish().result(); } } class Fish{ int num = 3; static int total=30; String jump() { return "jump"; } static String Speed() { return "normal"; } } class FlyFish extends Fish{ int num = 10; static int total=100; String jump() { return "Fly"; } public static String Speed() { return "fast"; } void result() { Fish f = new FlyFish(); System.out.println(f.num+" "+f.total+" "+f.jump()+" "+f.Speed()+" "); FlyFish f1 = new FlyFish(); System.out.println(f1.num+" "+f1.total+" "+f1.jump()+" "+f1.Speed()+" "); } } Answer:

「生活」眉毛觀人

圖片
相由心生,亦由心改。攝境入心,戒心離苦。 講話時顧左右而言他人的人,易有反叛之心,說話滔滔不絕的人,一句話反復言談的人,必傷元氣。 眉在無形中屬於金,掌管妻妾,兄弟等官位。若眉生的好,則其人財祿豐厚,生活幸福。 眉棱骨 起主孤獨:眉棱骨突起的,命運總是多波折,且孤獨處世。 眉生黑子 主聰穎:眉部有痣,說明此人非常聰明、尊貴、賢能。 天倉 隆起性格好:若兩天倉隆起,兩眉長,印堂廣闊,其人心中必定安詳平和,心性豁達。 眉頭看感情,眉尾看思想。 俗話說: 眉頭亂就感情亂,眉尾亂就思想亂 。 眉頭帶殺:平常人皺眉頭時兩個眉毛之間肌肉皺成“川”字樣,但有的人皺成“殺”字上面的一撇一捺樣,即所謂眉頭帶殺,暗示此人命運不好。 眉頭帶劍:眉頭帶劍的人不善處理感情,31虛歲左右感情會有變故。 無眉毛:無眉毛,屬凶相,加上眉骨凸,性格衝動凶相,女人無眉毛無老公無子女,孤獨一生。 輕揚眉(輕秀眉):眉毛整齊緊促、色澤黑亮、眉毛彎長清秀、眉尾略疏為“輕清眉”,長有此眉相理的人,成就雖然不會太大,但是富貴兩全,且長壽。 鬼眉:眉粗壓眼,眉尾雜亂,眉毛短不過目為“鬼眉”,長有此眉的人,內心狠毒不走正道,殘暴無情,為人淫亂,易有偷盜的壞毛病,此類人最宜從事屠夫或當兵,否則容易走上犯罪道路。 獅子眉:中晚年發達。眉頭整齊、眉心略彎、眉毛粗濃、眉尾圓潤下探、眉長而梳松為“獅子眉”,其人富貴正直、也主壽年高、但多數中晚年才發達。 帶劍眉:官訟是非。眉頭散亂衝射印堂者,稱為“帶劍眉”,其人兄弟不全、與父母緣分較薄、本人個性也不良,一生容易犯官司口舌,如果其它相理也不佳,則牢獄一生。  一字眉:文武雙全。眉頭和眉尾整齊又清秀,稱為“一字眉”,主兄弟多而和睦並富貴,也主自己富貴雙全,能文能武,有智謀,辦事正直果斷。 春心眉:婚姻不順。眉身太細、眉形狀態又細又長、眉頭和眉尾向下彎曲,猶如柳條枝般,為“春心眉”,此類人好色貪婬、頭腦只有男女色情、一生研究男女色情心理,但是多數婚姻不順。 促秀眉:眉毛短而清秀,眉頭細窄緊促,退印堂而眉尾過目者為“促秀美”此眉相理的人,聰明有才智,對國家或公司盡忠,對父母盡孝,貴氣在身,一生成就不凡。 螺旋眉:兄弟反目。眉尾有螺旋狀,稱為“螺旋眉”...

「Java」「轉貼」java.util.Hashtable 和 java.util.Vector

以下來源,來自於: 因特內軟體-技術專欄 http://www.interinfo.com.tw/edoc/ch20/frontline.htm 在JDK 內建的API 中,java.util.Hashtable 和 java.util.Vector 算是兩個非常相似,卻又用法迴異的物件。兩者相似的地方是,都可以動態的將一些物件放進去,相異的地方則是使用的方法與效率的差別。 Java.util.Vector 是一種JDK 內建的 API,它的定義就是一種能夠自動長大或縮小的陣列形態,其最大的用途就是彌補Array 的彈性不足,在宣告的時後,可以不必宣告其大小,等到物件一個個的加入時,容量不足時就會自動加大容量。使用的方式如下 Vector v=new Vector(); v.addElement("line 1"); v.addElement("line 2"); v.addElement("line 3"); v.addElement("line 4"); 由於Vector 是一種物件,因此操作的方式必需透過 method 來運作,如 新增一個物件 addElement(Object obj); 移除一個物件 removeElement(int Index); 清除所有的物件 removeAllElement(); 在Vector 中的元素是按照你加入的順序一個個排好的,所以如果你要讀取第 n 個元素就非常的方便而快速。但如果你要搜尋 "line 3" 這個元素就比較慢了。 Java.util.H...

「Java」Regular Expression 正則表示法

正則表示法: import java.util.Scanner; public class regular { public static void main(String[]args) { String use; Scanner scan = new Scanner(System.in); System.out.println("請輸入資訊:"); use = scan.next(); if(use.matches("[0-9]{4}-[0-9]{6}")) { System.out.println("輸入的資料:"+use); }else if(use.matches(".{2}[市縣].{2,}[路街道]([.1-9]段)?(.|\\d)+(-\\d+)?[號].*")) { System.out.println("輸入的資料:"+use); }else if(use.matches("^[_a-z0-9-]+([.][_a-z0-9-]+)*@[a-z0-9-]+([.][a-z0-9-]+)*$")) { System.out.println("輸入的資料:"+use); }else { System.out.print("輸入失敗"); } } } 以下資料來源 :  Java Document (https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html) 線上測試軟體: https://www.freeformatter.com/java-regex-tester.html#ad-output http://myregexp.com/ Summary of regular-expression constructs Construct Matches Characters x The character x \\ The backslash character \0 n ...