【全棧之路】JAVA基礎課程一_靜態變量和接口(20190610v1.0)

歡迎進入JAVA基礎課程

博客地址:https://segmentfault.com/a/1190000019435508
本系列文章將主要針對JAVA一些基礎知識點進行講解,爲平時歸納所結,不管是剛接觸JAVA開發菜鳥還是業界資深人士,都希望對廣大同行帶來一些幫助。若有問題請及時留言或加QQ:243042162。

寄語:
海納百川,有容乃大;壁立千仞,無欲則剛。

JDK與JRE

  • JDK(java development kit ,java開發工具包,提供java開發環境和運行環境)
  • JRE(java runtime environment,java運行環境)
  • JVM(java virtual machine,java虛擬機,整個java實現跨平臺的最核心的部分)

我們在安裝java環境時,經常會有疑問,jdk裏的jre與外面jre有什麼區別?

jdk-jre(專用jre)與公共jre的主要區別在於jdk-jre多了一個server的vm執行選項。
簡言之:如果電腦運行一個java程序的時候,會自動調用client vm;但是如果開發java程序時使用的就是server vm,注意:平時所說的“java自動更新”根本不是所安裝的JDK版本的更新,它指的是這個公用JRE運行時環境的更新,這個更新爲的是讓你的計算機能夠使用最新版本正常的運行一些網站或則Web應用等等當中的java程序。

JAVA標識符與關鍵字

1.標識符: 指類名(包括接口、枚舉、抽象類)、方法名、變量、常量名、包名等可以自定義的字符組合。

1)標識符不能是關鍵字或true、false、null。
2)標識符可以包含字母、數字0-9下劃線或美元符號。
3)標識符的第一個字符必須是字母、下劃線或美元符號。
4)標識符是區別大小寫的,並且沒有規定最大長度。

2.關鍵字:

關鍵字
訪問控制 private protected public
類,方法和變量修飾符 abstract class extends final implements interface
new static strictfp synchronized transient volatile
程序控制 break continue return do while if
for instanceof switch case default
錯誤處理 try catch throw throws finally
包相關 import package
基本類型 boolean byte char double float int
short null true false
變量引用 super this void
保留字 goto const

靜態變量static

1.用來修飾成員變量,將其變爲類的成員,從而實現所有對象對於該成員的共享;
2.用來修飾成員方法,將其變爲類方法,可以直接使用“類名.方法名”的方式調用,常用於工具類;
3.靜態塊用法,將多個類成員放在一起初始化,使得程序更加規整,其中理解對象的初始化過程非常關鍵;
4.靜態導包用法,將類的方法直接導入到當前類中,從而直接使用“方法名”即可調用類方法,更加方便。

代碼示例

class TestSon {

    public TestSon(String msg) {
        System.out.println(msg);
    }
}
public class StaticTest {

    TestSon son1 = new TestSon("son1成員變量初始化");
    static TestSon son2;

    static {
        son2 = new TestSon("static成員son2成員變量初始化");
        son4 = new TestSon("static成員son4成員變量初始化");
    }

    public StaticTest(String msg) {
        System.out.println(msg);
    }

    TestSon son3 = new TestSon("son3成員變量初始化");


    static TestSon son4;

    public static void funStatic() {
        System.out.println("static修飾的funStatic方法");
    }



    public static void main(String[] args) {
        StaticTest.funStatic();
        System.out.println("****************");
        StaticTest p1 = new StaticTest("p1初始化");
    }
}

輸出

static成員son2成員變量初始化
static成員son4成員變量初始化
static修飾的funStatic方法
****************
son1成員變量初始化
son3成員變量初始化
p1初始化

重寫與重載

方法的重寫 Overriding 和重載 Overloading 是 Java 多態性的不同表現。
重寫 Overriding 是父類與子類之間多態性的一種表現,重載 Overloading 是一個類中多態性的一種表現。

接口與抽象類

  • 如果你擁有一些方法並且想讓它們中的一些有默認實現,那麼使用抽象類吧。
  • 如果你想實現多重繼承,那麼你必須使用接口。由於Java不支持多繼承,子類不能夠繼承多個類,但可以實現多個接口。因此你就可以使用接口來解決它。
  • 如果基本功能在不斷改變,那麼就需要使用抽象類。如果不斷改變基本功能並且使用接口,那麼就需要改變所有實現了該接口的類。
  • 接口可以繼承接口。抽象類可以實現(implements)接口,抽象類是否可繼承實體類,但前提是實體類必須有明確的構造函數。
參數 抽象類 接口
默認的方法實現 它可以有默認的方法實現 接口完全是抽象的。它根本不存在方法的實現
實現 子類使用extends關鍵字來繼承抽象類。如果子類不是抽象類的話,它需要提供抽象類中所有聲明的方法的實現。 子類使用關鍵字implements來實現接口。它需要提供接口中所有聲明的方法的實現
構造器 抽象類可以有構造器 接口不能有構造器
與正常Java類的區別 除了你不能實例化抽象類之外,它和普通Java類沒有任何區別 接口是完全不同的類型
訪問修飾符 抽象方法可以有public、protected和default這些修飾符 接口方法默認修飾符是public。你不可以使用其它修飾符。
main方法 抽象方法可以有main方法並且我們可以運行它 接口沒有main方法,因此我們不能運行它。
多繼承 抽象方法可以繼承一個類和實現多個接口 接口只可以繼承一個或多個其它接口
速度 它比接口速度要快 接口是稍微有點慢的,因爲它需要時間去尋找在類中實現的方法。
添加新方法 如果你往抽象類中添加新的方法,你可以給它提供默認的實現。因此你不需要改變你現在的代碼。 如果你往接口中添加方法,那麼你必須改變實現該接口的類。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章