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

歡迎進入JAVA基礎課程

博客地址:https://blog.csdn.net/houjiyu...
本系列文章將主要針對JAVA一些基礎知識點進行講解,爲平時概括所結,無論是剛接觸JAVA開發菜鳥仍是業界資深人士,都但願對廣大同行帶來一些幫助。如有問題請及時留言或加QQ:243042162。java

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

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 native
new static strictfp synchronized transient volatile
程序控制 break continue return do while if else
for instanceof switch case default
錯誤處理 try catch throw throws finally
包相關 import package
基本類型 boolean byte char double float int long
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初始化");
    }
}

輸出this

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方法,所以咱們不能運行它。
多繼承 抽象方法能夠繼承一個類和實現多個接口 接口只能夠繼承一個或多個其它接口
速度 它比接口速度要快 接口是稍微有點慢的,由於它須要時間去尋找在類中實現的方法。
添加新方法 若是你往抽象類中添加新的方法,你能夠給它提供默認的實現。所以你不須要改變你如今的代碼。 若是你往接口中添加方法,那麼你必須改變實現該接口的類。
相關文章
相關標籤/搜索