第五天 java

來源:互聯網
上載者:User

標籤:規範   main方法   執行個體   ali   注意   rgb   soft   dem   匹配   

什麼是方法

java方法是語句的集合,他們在一起執行了一個功能.,比如司機開車,老師教書等

方法是解決一類問題的步驟的有序組合

方法在類和對象中

方法在程式中被建立,在其他地方被引用

方法的優點

使程式變的更加簡短清晰;

有利於維護

提高程式開發效率

提高代碼的重(cong)用性,一次編寫多吃使用

方法的定義

一般情況下定義一個方法如下 

修飾符 傳回型別 方法名(參數類型 參數名,參數類型 參數名2){    ...    方法體    ...    return 傳回值;}


修飾符

可選的,告訴編譯器如何編譯方法,定義了方法的訪問類型.

方法的修飾符分為存取控制修飾符和非存取控制修飾符.修飾符在之後具體學習.

傳回型別 方法的傳回值類型,如果方法不返回任何值,為void.
參數類型 用於限定調用方法時傳入資料類型,
參數名 一個變數用於接收調用方法接收的參數.
return 

用於結束方法並且返回方法指定類型的值  .方法傳回值必須為方法聲明的反覆類型,

如果沒有傳回值也就是說 傳回型別為void,此時return可省略.

傳回值
被renturn語句返回的值,返回給調用者.
方法體: 方法體包含具體的語句,定義該方法的功能。

參數列表

(參數類型 參數名1,參數類型 參數名2)

用於描述方法被調用時需要接受的參數類型. 參數是可選的,可以不包含任何參數唯寫();
方法名 自訂的名字,但要符合命名規範,最好使用 lowerCamelCase 風格,必須遵駝峰形式

例子:

public static int age(int age){...}


多個參數

static float getnumber(float a,float b){...}


方法的調用

java支援兩種方法調用方法:

當程式調用方法的時候,就把控制權交給了被調用的方法,當被調用的方法的返回語句執行或者到達方法體閉括弧時候交還給程式.

當方法返回一個一個值的時候,方法調用通常被當作一個值;例如

調用方式:對象名.方法名

int larger = max(30, 40);

當方法的傳回值是void,方法調用一定是一條語句例如:

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

執行個體:定義了一個getArea()方法用於求矩形的面積,參數x和y分別用於接收調用方法時傳入的高和寬,return語句用於返回計算所得的面積。在main()方法中通過調用getArea()方法,獲得矩形的面積,並將結果列印。 方法println返回void。下面的調用是個語句:


public class MethodDemo01 {    public static void main(String[] args) {    int area = getArea(3, 5); // 調用 getArea方法    System.out.println(" The area is " + area);}// 下面定義了一個求矩形面積的方法,接收兩個參數,其中x為高,y為寬public static int getArea(int x, int y) {    int temp = x * y; // 使用變數temp記住運算結果    return temp; // 將變數temp的值返回    }}


main 方法的頭部是不變的,如例子所示,帶修飾符 public 和 static,返回 void 類型值,方法名字是 main,此外帶個一個 String[] 型別參數。String[] 表明參數是字串數組。

方法的調用過程

從mian方法入口,開始執行程式

從mian方法的代碼開中開始執行程式

調用方法getArea,傳遞參數3和5進去.(參數傳遞時有順序的) 

getArea方法開始執行

計算temp=w*h=30

return temp;將return後面的資料返回給方法的調用者.

在方法定義後,參數變數w,h沒有具體的數值,在調用的時候,數值由傳遞著傳遞過來.

方法的參數變數稱為形式參數,形參 intgetArea(int w,int h) wh為形參 

而調用方法的時候,傳遞的資料為實際參數,就是實參int a= getArea(a,b) ab就是實參

JVM將記憶體進行了劃分,分為了5個地區

寄存器:記憶體和CPU之間

本地方法棧:JVM調用了系統的功能,

方法和資料共用區:運行時期claa檔案進去的地方

方法棧:所有的方法啟動並執行時候進入的時候記憶體

堆:儲存容器和對象.比如數組

方法調用記憶體配置圖

程式運行時期,必須要進入記憶體

運行檔案後,編譯的class檔案進去內方法和資料共用區

JVM虛擬機器調用mian方法,

main方法進發方法棧開始運行

mian方法中調用方法getArea並傳遞參數

getArea方法進棧運行

計算結果返回調用者.

方法getArea結束出棧,釋放記憶體資源

方法定義的注意事項:

方法不能定義在另一個方法裡面

寫錯方法名

寫錯了參數列表

方法重複定義問題

調用方法的時候,傳回值是void,不能卸載輸出語句中

方法參數

按值傳遞:方法接受的是調用者提供給的值

按引用傳遞:方法接受的是調用者提供的變數對應的變數值.

一個方法可以修改傳遞引用所對應的變數值,而不能更改傳遞值所對應的變數值

java程式設計語言總是採用按值調用

方法參數共有兩種:

基礎資料型別 (Elementary Data Type):

對象引用:

基礎資料型別 (Elementary Data Type)例子:

publci static void value(int x){

    x = 3 * x;

}

調用這個方法

int a = 10;

value(a)

//結果a為10

無論這樣,調用這個方法之後,a的值還是10,具體過程

形參x被初始化a值的拷貝(也就是10)

x乘3後等於30 但是a任然是10;

方法結束後 x不在使用

一個方法不能修改一個基礎資料型別 (Elementary Data Type)的參數,

對象引用例子


public class MethodDemo_3{

      public static void main(String[] args){

            int[] arr = {1,2,3,4};

            System.out.println(arr[2]); // 3

            change(arr);

            System.out.println(arr[2]); //  100

      }

      

      public static void change(int[] arr){

            arr[2] = 100;

      }

      

      

}



總結:一個方法不能修改一個基礎資料型別 (Elementary Data Type)的參數(數值型和布爾型)

        一個方法可以改變一個對象參數的狀態

        一個方法不能讓對象引用一個新的對象

方法重載

如果多個方法有相同的名字,不同的參數,便產生了重載.編譯器必須挑選具體執行那個方法,他通過各種方法給出的參數類型與特定方法調用所

使用的類型進行匹配,來挑選出相應的方法.如果編譯器找不到匹配的參數,或者找出多個可能的匹配,就會產生編譯時間錯誤.這個過程稱為重載解析,

java運行重載任何的方法.

因此要完整的描述一個方法需要指出方法名和參數類型,這個叫做方法的簽名.

傳回型別不是方法簽名的一部分也就是說,不能有兩個名字相同,參數類型也相同卻返回不同類型的方法

public class MethodOverLoadDemo{

      public static void main(String[] args){

            //對於重載的調用,根據參數傳遞進行區分

            //System.out.println();

            double sum = getSum(2.3,3.5);

            System.out.println(sum);

      }

      /*

        對參數求和,利用方法的重載特性

      */

      public static int getSum(int a,int b){

            System.out.println("兩個int參數");

            return a+b;

      }

      public static int getSum(int a,int b,int c){

            System.out.println("三個int參數");

            return a+b+c;

      }

      public static double getSum(double a,double b){

            System.out.println("兩個double參數");

            return a+b;

      }

      /*

         定義方法,對參數求和

         參數,沒規定幾個,資料類型

      

      public static int getSum(int a ,int b){

            return a+b;

      }

      

      public static double getSumDouble(double a,double b){

            return a+b;

      }

      public static int getSum3(int a,int b, int c){

            return a+b+c;

      }*/

}





第五天 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.