閱讀491 返回首頁    go 技術社區[雲棲]


基礎加強

1.workspace與project。

   workspace工作區間,project一個項目工程。


2.Perspective與view。

   Persperctive是透視圖。view是視圖。每一個小窗口就是視圖,若幹個不同的小窗口集合在一起就是透視圖。


3.設置整個workspace的javac與java。

   設置整個workspace的javac,Window-Preferences(喜好)-Java-Compiler(編譯,題外話“程序員經常用到的javac中的c也是這個單詞,compoler”):Compiler compliance level選項

   設置整個workspace的java,Window-Preferences(喜好)-Java-Installed JREs(安裝過的JREs(java runtime environment ,java運行時環境))


4.設置單個工程的javac與java

   設置單個工程的javac,鼠標右鍵單擊項目工程名-Properties(屬性)-Java Compiler(編譯):Compiler compliance level選項

   設置單個工程的java,鼠標右鍵單擊項目工程名-Properties(屬性)-Java Build Path-右邊視圖的上方Libraries;或者鼠標右鍵單擊項目工程名-Build Path-Confugure Build Path...-右邊視圖的上方Libraries

    4-1.高版本的java能否運行低版本的javac編譯的程序?
    能(原因是:開發軟件版本一般都是向下兼容,向上不考慮的。)
    4-2.低版本的java能否運行高版本的javac編譯的程序?
    不能(原因是:開發軟件版本一般都是向下兼容,向上不考慮的。)


5.快捷鍵的綁定與代碼模板

   綁定快捷鍵:Window-Preference(喜好)-General(一般)-雙擊Keys(快捷鍵)。想知道更詳細的同學請參看視頻: “張孝祥Java基礎加強第一部分03小節”

   代碼模板的製作:Window-Preference(喜好)-Java-Editor(編輯)-Templates(模板)-New。想知道更詳細的同學請參看視頻: “張孝祥Java基礎加強第一部分06小節”


6.切換工作區間(工作台)的小操作,File-Switch(選擇) Workspace(工作區間)


7.小知識:許多個java包集合在一起就叫做java庫。


8.普通的import語句可以導入一個類或某個包中的所有類。


9.import static語句導入一個類中的某個靜態方法或所有靜態方法

  關於靜態導入的好處,與壞處。請參照https://macrob.blog.163.com/blog/static/20382818720122152294480/

  import static java.lang.Math.max;

  /**
         * 一般正常寫法
         */
//        System.out.println(Math.max(3, 6));
//        System.out.println(Math.abs(3 - 6));
        /**
         * 不想寫類名,想直接用方法名,就要用到靜態導入,靜態導入是JDK5.0的新特性
         */
        System.out.println(max(3, 6));
        System.out.println(abs(3 - 6));//這方法編譯報錯


10.一個大公司的麵試題:說說overload(重載)與override(重寫)的區別

      重載定義:在一個類定義中,可以編寫幾個同名的方法,但是隻要它們的簽名參數列表,和參數列表順序不同,Java就會將它們看做唯一的方法。簡單的說,一個類中的方法與另一個方法同名,但是參數表和參數順序不同,這種方法稱之為重載方法。重載仍符合多態定義——通過單一標識支持不同特定行為的能力,隻是重載屬於靜態多態,而不是通過繼承和虛函數實現的動態多態。重載(overload)和多態無關,真正和多態相關的是覆蓋(inheritance)。重載隻是一種語言特性,是一種語法規則,與多態無關,與麵向對象也無關。不過針對所謂的第二種重載,有一個專門的名詞--重寫或重定義。

     重載特點:由於重載可以在同一個類中定義功能類似的函數,這給程序員管理類的相似函數提供了極大的方便。例如,在一個定義圓的類中,需要設定圓心和半徑來確定一個圓對象,程序員不需要設定setRadius(float r)和SetPoint(float x,float y)兩個不同名函數,而隻需要設定一個CSetCicle函數名就夠了。在這個簡單的例子中重載並沒有明顯的優勢,可是當一個類中相似功能函數有幾十、上百個的時候,重載的優勢就顯現出來了,這時程序員不需要去記這麼繁多的函數名,可以把更多的精力放在程序本身上。重載的方法隻屬於子類。
  
    上代碼:
   public void test1(int x,int y){//--------1--------- }
    
    public void test1(int x,int y,int z){//--------2---------}
    
    public void test1(int x,String y){//--------3--------- }
    
    public void test1(String y,int x){//--------4---------  }
    
    public String test1(int x,int y){//--------5--------- return null; }
    1,2參數數量不同;1,3參數類型不同;3,4參數順序不同;這些情況都算重載。
    1,5返回值類型不同;這情況不算重載。

  

    重寫定義:通常,派生類繼承基類的方法,因此,在調用對象繼承方法的時候,調用和執行的是基類的實現.但是,有時需要對派生類中的繼承方法有不同的實現.
例如,假設動物類存在"跑"的方法,從中派生出馬和狗,馬和狗的跑得形態是各不相同的,因此同樣方法需要兩種不同的實現,這就需要"重新編寫"基類中的方法.
上代碼:
public class Animal {
    
    public void run(){
        System.out.println("我是動物我會跑!");
    }
    
    public static void main(String[] args){
        //這裏有個知識點,就是裏氏代換原則(看不懂的同學,請多多百度或google)
        //實例化一個動物類
        Animal animal = new Animal();
        //實例化一個馬類
        Animal horse = new Horse();
        //實例化一個雞類
        Animal chicken = new Chicken();
        //實例化一個鳥類
        Animal bird = new Bird();
        
        animal.run();
        horse.run();
        chicken.run();
        bird.run();
    }
}
//一個方法有@Override,一個方法沒有@Override,在這我不給答案,各位同學自己想想哈
class Horse extends Animal{
    @Override
    public void run(){
        System.out.println("我是馬,我繼承了動物類,重寫了run方法,我用四條腿跑!");
    }
}
class Chicken extends Animal{
    
    public void run(){
        System.out.println("我是雞,我繼承了動物類,重寫了run方法,我用二條腿跑!");
    }
}
class Bird extends Animal{
    
}
輸出結果:
我是動物我會跑!
我是馬,我繼承了動物類,重寫了run方法,我用四條腿跑!
我是雞,我繼承了動物類,重寫了run方法,我用二條腿跑!
我是動物我會跑!

重寫總結:
1、必須是在繼承裏,
2、方法名、返回值類型、參數個數和參數類型 都必須相同
3、派生類重寫的方法的訪問權限不能低於基類的權限
       3-1.當基類(也就是父類)被重寫的方法作用域為public時,方法可以被重寫
       3-2.當基類(也就是父類)被重寫的方法作用域為protected時,方法可以被重寫
       3-3.當基類(也就是父類)被重寫的方法作用域為private時,方法不可以被重寫
4、派生類拋出的異常應該和基類相等或比基類更小



他們的區別:重載與重寫的區別就在於是否覆蓋,重寫一般多發生在不同的類且存在繼承關係之間,而重載多是在一個類裏或者一塊代碼段裏。



11.有一個寫法public void show(int x,int ... args){
   
}
其中的int ... args寫法為可變參數寫法,在做東西的時候會有用的,想知道詳細的同學請參看視頻: “張孝祥Java基礎加強第一部分09小節”



有什麼好與不好的請大家多給給意見哈!




最後更新:2017-04-03 14:53:55

  上一篇:go ClientToScreen 和ScreenToClient 用法
  下一篇:go destination host unreachable 問題解決