關鍵字的細節總結

  • 構造函數:構建創造對象時調用的函數。
  • 作用:可以給對象進行初始化。

1.創建對象都必須要通過構造函數初始化。
2.一個類中如果沒有定義過構造函數,那么該類中會有一個默認的空參數構造函數。
3.如果在類中定義了指定的構造函數,那么類中的默認構造函數就沒有了。

  • 一般函數和構造函數什么區別呢?

1.構造函數:對象創建時,就會調用與之對應的構造函數,對對象進行初始化。
2.一般函數:對象創建后,需要函數功能時才調用。
3.構造函數:對象創建時,會調用只調用一次。
4.一般函數:對象創建后,可以被調用多次。

  • 什么時候定義構造函數呢?

1.在描述事物時,該事物一存在就具備的一些內容,這些內容都定義在構造函數中。
2.構造函數可以有多個,用于對不同的對象進行針對性的初始化.
3.多個構造函數在類中是以重載的形式來體現的。

  • 細節:

1,構造函數如果完成了set功能。set方法是否需要。
2,一般函數不能直接調用構造函數。
3,構造函數如果前面加了void就變成了一般函數。
4,構造函數中是有return語句的。

構造函數.jpg

當成員變量和局部變量重名,可以用關鍵字this來區分。

this : 代表對象。代表哪個對象呢?當前對象。
this就是所在函數所屬對象的引用。
簡單說:哪個對象調用了this所在的函數,this就代表哪個對象。

/*
    判斷是否是同齡人。
    */
    public boolean compare(Person p)
    {
        /*
        if(this.age==p.age)
            return true;
        else
            return false;
        */
        return this.age==p.age;
    }

this也可以用于在構造函數中調用其他構造函數。
注意:只能定義在構造函數的第一行。因為初始化動作要先執行。
圖示:

this.jpg
構造函數間調用.jpg

static的特點:

1,static是一個修飾符,用于修飾成員。
2,static修飾的成員被所有的對象所共享。
3,static優先于對象存在,因為static的成員隨著類的加載就已經存在了。
4,static修飾的成員多了一種調用方式,就可以直接被類名所調用 。 類名.靜態成員 。
5,static修飾的數據是共享數據,對象中的存儲的是特有數據。

成員變量和靜態變量的區別?

1,兩個變量的生命周期不同。
成員變量隨著對象的創建而存在,隨著對象的被回收而釋放。
靜態變量隨著類的加載而存在,隨著類的消失而消失。

2,調用方式不同。
成員變量只能被對象調用。
靜態變量可以被對象調用,還可以被類名調用。

3,別名不同。
成員變量也稱為實例變量。
靜態變量稱為類變量。

4,數據存儲位置不同。

成員變量數據存儲在堆內存的對象中,所以也叫對象的特有數據.
靜態變量數據存儲在方法區(共享數據區)的靜態區,所以也叫對象的共享數據.

靜態使用的注意事項:

1,靜態方法只能訪問靜態成員。(非靜態既可以訪問靜態,又可以訪問非靜態)
2,靜態方法中不可以使用this或者super關鍵字。
3,主函數是靜態的。

靜態內存圖解.jpg

靜態什么時候用?
1,靜態變量。

當分析對象中所具備的成員變量的值都是相同的 。
這時這個成員就可以被靜態修飾。
只要數據在對象中都是不同的,就是對象的特有數據,必須存儲在對象中,是非靜態的。
如果是相同的數據,對象不需要做修改,只需要使用即可,不需要存儲在對象中,定義成靜態的。

2,靜態函數。

函數是否用靜態修飾,就參考一點,就是該函數功能是否有訪問到對象中的特有數據。
簡單點說,從源代碼看,該功能是否需要訪問非靜態的成員變量,如果需要,該功能就是非靜態的。
如果不需要,就可以將該功能定義成靜態的。當然,也可以定義成非靜態,
但是非靜態需要被對象調用,而僅創建對象調用非靜態的
沒有訪問特有數據的方法,該對象的創建是沒有意義。


靜態代碼塊
static{}
隨著類的加載而執行。而且只執行一次。
作用:
用于給類進行初始化。

構造代碼塊(動態代碼塊)
{}
可以給所有對象進行初始化的。
而構造函數是給對應的對象進行針對性的初始化


主函數特殊之處:
1,格式是固定的。
2,被jvm所識別和調用。

public:因為權限必須是最大的。
static:不需要對象的,直接用主函數所屬類名調用即可。
void:主函數沒有具體的返回值。
main:函數名,不是關鍵字,只是一個jvm識別的固定的名字。
String[] args:這是主函數的參數列表,是一個數組類型的參數,而且元素都是字符串類型。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,687評論 0 11
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,759評論 18 399
  • Advanced Language Features 知識點:一. static修飾符 static修飾符可以用來...
    風景涼閱讀 455評論 0 0
  • 在北方,九月的天氣還是很熱的。熙熙攘攘的人群在汽車站擠來擠去。每個人的臉都紅撲撲的,有的汗流浹背,有的在大風扇等下...
    蘇白聽風閱讀 244評論 0 0
  • 找一個寫字的地方,很容易。找一個心能停留的地方,很難。
    Jason_hong閱讀 109評論 0 0