大資料JAVA基礎第九天

來源:互聯網
上載者:User

標籤:需要   http   idt   修飾符   舉例   this關鍵字   並且   set   成員   

1.JavaBean的特點:

  • private 成員屬性
  • public成員方法
  • 有get/set方法對成員變數進行賦值/取值
  • 有空構造方法

符合這些條件的稱為標準的JavaBean。

2.構造方法(也叫構造器)

構造方法(也叫構造器)是一種特殊的方法,定義的位置是在類中,成員方法外,和成員變數,成員方法是平級關係,定義構造方法和定義一般的成員方法很像,它的特點是與類同名,但是沒有傳回值,其文法格式如下:

 

[修飾符] 構造方法名(形參列表){

    //零到多條可執行語句組成構造方法的執行體

3.構造方法定義時注意事項:

1.構造方法必須和類同名

2.構造方法沒有傳回值,也不能使用void,一旦加了傳回值或者void,那麼這個方法就是一個成員方法,而不是構造方法了

4.預設的構造方法

當定義一個類的時候,如果沒有顯式的定義任何構造方法,就像之前的例子,都沒有定義構造方法,這時,系統會給這個類加上一個預設的無參構造方法,並且構造方法裡沒有任何語句。

例如:

class Demo{

    //public Demo(){}

    //如果沒有定義任何構造方法的話,系統自動加上一個空參構造方法

    public void show(){

       System.out.println("hello world");

    }

}

 

一旦有自訂構造方法,系統就不會加上任何構造方法了

class Demo{

    public Demo(int id){

       System.out.println("這是有一個參數的構造方法");

    }

}

5.構造方法的使用

實際上,在程式中使用new關鍵字建立一個類的執行個體化對象的時候,就是去調用該類的相應的構造方法,

此時應注意,根據構造方法的形參列表的不同來調用不同的構造方法,調用不存在的構造方法肯定編譯報錯

6.this關鍵字

this關鍵字用來指向當前對象,根據this關鍵字出現的位置不同,this作為對象的引用有兩種情況:

  • 在構造方法中引用該構造方法正在初始化的對象
  • 在方法中引用正在調用該方法的對象

this關鍵字的使用情境之一,就是讓類中的一個方法去訪問類中的另一個執行個體方法或變數,例如,定義了一個Person類,其中定義了兩個方法,一個叫sayHi()方法,另一個speak()方法,在speak()方法中需要先調用sayHi()方法,該如何定義Person類?

看下面的範例程式碼:

class Person{

    public Person(){}

    //打招呼方法

    public void sayHi(){

       System.out.println("Hello");

    }

    //談話方法

    public void speak(String content){

       //想要使用到Person類的sayHi方法,先建立一個對象,然後再調用這個對象的執行個體方法

       Person p = new Person();

       p.sayHi();

       System.out.println("我想說的是:" + content);

    }

}

 

class PersonTest{

    public static void main(String[] args){

       Person per = new Person();

       per.speak();

    }

}

7.在測試類別中首先執行個體化一個Person對象per,然後調用這個對象的speak方法,但是在這個方法被調用的時候,

又建立了一個Person對象p,然後調用了對象p的sayHi方法,所以,在程式啟動並執行過程中,實際上是產生了兩個Person執行個體對象。

 這個程式可以實現方法的調用,但是這樣做好嗎?程式在speak方法裡建立的Person對象目的其實很簡單,就是為了調用一次這個對象的sayHi方法。

8.static關鍵字

 

static 關鍵字的字面直譯是“靜態”,實際上這個說法十分模糊,根本無法說明static的真正作用。

static的真正作用就是用於區分成員變數,方法,內部類,初始化塊(後面講)這四種成員是屬於類本身還是屬於這個類的執行個體。

在類定義中,static相當於一個標誌,有static修飾的成員屬於類本身,沒有static修飾的成員屬於該類的執行個體對象。

所以,為了區分這兩種不同的成員變數,凡是有static修飾的成員變數/成員方法,稱為類變數/類方法,沒有static修飾的成員變數/成員方法稱為執行個體變數/執行個體方法

為Java中變數的分類圖:

                             

9.static修飾類的成員變數和成員方法(即:類變數,類方法)

靜態成員變數(類變數)屬於類,可用類名或對象名兩種方式進行訪問

靜態成員方法(類方法)屬於類,可用類名或對象名兩種方式進行訪問

 

只要類存在,程式中就可以訪問到類變數,類變數訪問的文法

類名.類變數 Student.name

只要執行個體存在,程式中就可以訪問到該執行個體的執行個體變數,訪問執行個體變數的文法

執行個體名.執行個體變數 s.id

當然,類變數也可以通過該類的執行個體來訪問,通過執行個體訪問類變數的文法

執行個體名.類變數 Student.name/s.name

10.static關鍵字的特點

被static關鍵字修飾的部分,有如下特點

  • 隨著類的載入而載入
  • 優先於對象存在(因為類的載入優先於對象的建立)
  • 被類的所有執行個體對象共用(存在於方法區中的靜態區,如果是一個類變數的話,任何一個對象對該變數進行修改,都會在其他對象中得到體現),這也是我們在定義一個類時,判斷是否使用靜態關鍵字的標準
  • 可以通過類名訪問(類名.靜態變數名/類名.靜態方法名),也可以使用對象名來訪問,推薦使用類名調用,因為靜態變數/方法是屬於類的

11.什麼時候使用static關鍵字?使用static關鍵字的標準

當一個變數或者方法屬於一個類,而不是屬於這個類的執行個體對象時,就可以使用static來修飾,這樣就可以使用類名.成員(變數/方法)的方式訪問這個static變數/方法。

所有這個類的執行個體對象都能看到對靜態變數(類變數)的更改

12.static方法重點注意事項

  • 靜態方法(類方法)中不能使用this關鍵字,this關鍵字代表的是當前對象的引用,但是static關鍵字修飾的方法是屬於類的,隨著類的載入而存在,但當類進行載入時,此時執行個體對象還沒有被建立出來,這時是無法使用this關鍵字的
  • 靜態方法只能訪問靜態成員變數和靜態成員方法

13.static記憶體配置圖

被static修飾的變數或者方法存在方法區中的靜態區

14.static關鍵字注意事項

static關鍵字注意事項

    A:在靜態方法中不能使用this關鍵字

      如何理解呢?

       靜態是隨著類的載入而載入,this是隨著對象的建立而存在。

       由於類比對象優先存在,所以靜態比對象先存在。

    B:靜態方法只能訪問靜態成員變數和靜態成員方法

       靜態方法訪問的是:

       成員變數:只能訪問靜態變數

       成員方法:只能訪問靜態成員方法

       非靜態方法訪問的是:

           成員變數:可以是靜態(因為類已經載入了,成員方法當然可以調用),也可以是非靜態

           成員方法:可是是靜態成員方法(因為類已經載入了),也可以是非靜態成員方法。

    簡單記:

       靜態只能訪問靜態。

15.靜態變數和執行個體變數的區別

所屬不同

  • 靜態變數屬於類,所以也稱為為類變數
  • 執行個體變數屬於執行個體對象,所以也稱為執行個體變數

記憶體中位置不同

  • 靜態變數儲存於方法區中的靜態區
  • 執行個體變數儲存於堆記憶體

在記憶體出現的時間不同

  • 靜態變數隨著類的載入而載入,隨著類的消失而消失
  • 執行個體變數隨著對象的建立而存在,隨著對象的消失而消失

調用方式不同

  • 靜態變數可以通過類名調用,也可以通過對象調用
  • 執行個體變數只能通過對象名調用

 

所屬

記憶體位置

出現時間

調用

靜態變數

方法區的靜態區

隨類載入而載入

類名調用,對象名調用

執行個體變數

對象

堆記憶體

隨對象建立而存在

對象名調用

16.執行個體變數和局部變數的區別

在類中的位置不同

執行個體變數 在類中,並且在方法外

局部變數 方法內或者方法聲明上(形參)

在記憶體中的位置不同

執行個體變數 堆記憶體

局部變數 棧內

生命週期不同

執行個體變數 隨著對象的存在而存在,隨著對象的消失而消失

局部變數 隨著方法的調用而存在,隨著方法的調用完畢而消失

初始化值不同

執行個體變數 有預設的初始化值

局部變數 沒有預設的初始化值,必須先定義,賦值,才能使用。

 

 

聲明位置

記憶體位置

生命週期

初始值

局部變數

方法內,形參上

棧記憶體

隨方法調用而存在

必須先定義,賦值再使用

執行個體變數

類內,方法外

堆記憶體

隨對象建立而存在

有預設初始值

17.   main方法是靜態

public static void main(String[] args) {}

  public 被jvm調用,存取權限足夠大。

  static 被jvm調用,不用建立對象,直接類名訪問

  void被jvm調用,不需要給jvm傳回值

  main 一個通用的名稱,雖然不是關鍵字,但是被jvm識別

  String[] args 以前用於接收鍵盤錄入的

18.main方法的格式講解:

       public static void main(String[] args) {...}

      

       public:公用的,存取權限是最大的。由於main方法是被jvm調用,所以許可權要夠大。

       static:靜態,不需要建立對象,通過類名就可以。方便jvm的調用。

       void:因為我們曾經說過,方法的傳回值是返回給調用者,而main方法是被jvm調用。返回內容給jvm沒有意義。

       main:是一個常見的方法入口。我見過的語言都是以main作為入口。

       String[] args:這是一個字串數組。

           這個東西為了接收鍵盤錄入的資料的。

           格式是:

              java MainDemo hello world java

19.如何使用API文檔

點擊顯示,找到索引,看到輸入框

以Scanner舉例

在輸入框裡面輸入Scanner,然後斷行符號

看包

    java.lang包下的類不需要匯入,其他的全部需要匯入。

    要匯入:

    import java.util.Scanner;

再簡單的看看類的解釋和說明

看類的結構

    成員變數   欄位摘要  

    構造方法   構造方法摘要

    成員方法   方法摘要

學習構造方法  

    A:有構造方法   就建立對象

    B:沒有構造方法 成員可能都是靜態,這樣的類也不需要構造方法,直接用類名就行

看成員方法

    A:左邊

       是否靜態:如果靜態,可以通過類名調用

       傳回值類型:人家返回什麼,你就用什麼接收。

    B:右邊

       看方法名:方法名稱不要寫錯

       參數列表:人家要什麼,你就給什麼;人家要幾個,你就給幾個

 

大資料JAVA基礎第九天

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.