發表文章

求1000和495的最大公因數

就想踢館這連結( https://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E5%85%AC%E5%9B%A0%E6%95%B8 )中的Java寫法, 想用最直覺方式求值,覺得連結中的有點高級或是太假掰XD, /**  *  * @author lucrecia  */ public class Hk3_1 {     public static void main(String[] args) {         int m = 1000;         int n = 495;         List<Integer> list = new ArrayList<Integer>();         for (int i = 1; i < 1000; i++) {             if (m % i == 0 && n % i ==0) {                 list.add(i);             }         }         int maxValue = Collections.max(list);         System.out.println(maxValue);     } }

從Ant、Maven到Gradle

最近還沒能找到空檔了解這3樣工具, 先keep下來(連結依學習順序放): http://www.codedata.com.tw/java/understanding-gradle-1-ant/ http://www.codedata.com.tw/java/understanding-gradle-2-maven/ http://www.codedata.com.tw/java/understanding-gradle-3-getting-started/ http://www.codedata.com.tw/java/understanding-gradle-4-gradle-script/ http://www.codedata.com.tw/java/understanding-gradle-3-gradle-task-abc/ http://www.codedata.com.tw/java/understanding-gradle-4-java-project-build-script-customization/ http://www.codedata.com.tw/java/understanding-gradle-7-java-project-dependencies/

differences between app server & web server

剛好看到, 這篇講得滿好的 http://www.javaworld.com/article/2077354/learn-java/app-server-web-server-what-s-the-difference.html

更多了解superclass和subclass的互動

第一個可多了解的是: 當subclass需要用到superclass的method, 並想再對這method額外加上自己的行為 時(也就是說subclass不想完全override掉superclass的method)? --> ans. 可使用super這個關鍵字       e.g.       public void walk() {           super.walk();                         --> 先執行super版的walk()           // subclass's own walk stuff   --> 再回來執行sub版自訂的行為/功能       } 第二個可多了解的是superclass的"存取權限(access level)": --> 共有4種權限(權限最受限制到最不受限制為由左到右排):       PRIVATE -> DEFAULT -> PROTECTED -> PUBLIC --> 這些存取權限控制誰可以接觸什麼, 目前先討論public & private:       public的member會被繼承       private的member不會被繼承

設計繼承步驟 & IS-A test

如何設計繼承的步驟分為5個: step 1: 找出具有共通屬性&行為的物件 step 2: 設計代表共通狀態&行為的class step 3: 決定subclass是否需要有特殊設計的method(也就是讓某行為具有特定不同的表現方式) step 4: 透過尋找使用共通行為的subclass來找到更多抽象化的機會 step 5: 最後完成class的繼承階層 IS-A test: 此測試是適用繼承階層的任一地方, 也就是說, 如果繼承階層樹被設計地很好, --> 則所有的subclass皆應通過任一個上層superclass的IS-A test。 e.g. (繼承順序由上到下) class Animal:     makeNoise()     eat()     sleep()     roam() -->     class Canine:         roam()     -->         class Wolf:             makeNoise()             eat() 寫好繼承階層樹後, 開始做IS-A test: 1. Canine extends Animal    --> 通過 2. Wolf extends Canine    --> 通過 3. Wolf extends Animal    --> 通過 4. Canine IS-A Animal    --> 通過 5. Wolf IS-A Canine    --> 通過 6. Wolf IS-A Animal    --> 通過 可以這麼說: --> Wolf是一個Canine, 所以Canine能做的事Wolf都能做 --> 而且Wolf也是個Animal, 所以Animal能做的事Wolf也都能做 注意: 當我們說"如果X IS-A Y合理"時, 有以下這些可能性:     1. 這兩者或許存在於同一個繼承架構下     2. 這兩者根本是相同的, 或剛好擁有相同的行為 需要記得"X IS-A Y" --> 隱含X可做出任何Y可做的事

繼承簡介

當我們說"a class繼承自b class" --> 以Java方式說: subclass extends the superclass --> 意為subclass繼承了superclass的成員(member) 那什麼是"member"? --> 一個class的member包含:        1. instance variable       2. method subclass可以: 1. 新增自有method 2. 覆蓋(override)過superclass所提供的method, 以改善或延伸superclass原本method內容 最後, 為何instance variable不能被override掉? --> 因instance variable沒有被定義特殊的行為,所以並不需要這麼做。 如果今天subclass需要某instance variable是別的內容, 可以直接在subclass中將該instance variable賦予自己想要的值就好。 e.g.      superclass中, int size = 2;     subclass中, 直接寫int size = 3;  

指定自己使用到的class完整名

class完整名稱: e.g. java.util . ArrayList  (黃底: package名稱; 藍底:class名稱) 有兩種方法能指定class, 第一種是我想要的那種: import java.util.ArrayList; 第二種是隨時用到該class時便要打出全名, e.g. java.util.ArrayList<Egg> list = new java.util.ArrayList <Egg>(); --> 標橘底是全名 p.s. 只有來自於java.lang這個package不用指定全名。  -->  因為java.lang經常被使用到,所以是個會被預先引用的package