方法的理解

2021-10-08 18:07:36 字數 2763 閱讀 3429

方法,就是實現某個功能的**塊

簡化自己的**,當我們定義與呼叫某乙個功能時,如果不使用方法,那我們每次呼叫該功能,都需要輸入該功能對應的大量**。

所以,我們將乙個功能,封裝在乙個方法裡,當我們需要用到這個功能時,就呼叫這個方法,這樣就能簡化我們的**。

訪問許可權修飾符 返回值型別 方法名字(引數型別 引數1,引數2,…)方法名字,除了主方法,是可以隨意命名的

返回值的型別是什麼,返回值型別的名稱就是什麼:

例如我們沒有返回值,返回值型別就是void

​ 我們返回值為整數形式,返回值型別就可以用int

方法呼叫時,我們在定義方法時,定義了幾個引數,呼叫時,就要傳入幾個引數

定義時傳入的引數,叫做形式引數,形參(宣告該方法被呼叫時,需要傳入一種什麼樣的引數:包括型別,個數,順序)

呼叫時傳入的引數,叫做實際引數,實參,實參一定要按照形參定義的型別,個數,順序來傳入

即形參實參需要一一對應

1.載入class檔案

2.呼叫主方法(主方法在棧記憶體中開闢空間)

3.在主方法中,用類名.方法名,呼叫sum方法,傳入引數

4.sum方法被呼叫,開始執行(在棧記憶體中開闢空間)

5.sum方法中,對傳入的引數進行操作

6.並得到乙個結果,返回該結果

7.主方法中定義乙個變數,接收sum方法得到的結果

8.列印得到的結果

注意:若乙個方法是被static修飾的靜態方法,該方法在某個類中定義,同時在該類中呼叫,那麼可以直接用方法名去呼叫,等同於 類名.方法名

方法必須定義在類中,不能定義在方法中

在方法的定義階段,傳入形參時,如下列形式定義形參:

static

void

add(

double cutoff,

int.

.. arr)

其中 int… arr 就是可變引數

可變引數本質就是乙個語法糖==>用來方便程式設計師的

如上面那個**,我們在傳入實參時,就可以傳入任意個數的引數了:

add

(0.9,1

,2,3

,4,5.

......)

運用例項:

public

class

demo

//此處定義可變引數

public

static

int[

]times

(double cutoff,

int.

..arr)

return arr;

}}

觀察下列**:

static

void

add(

int a,

int b)

static

void

add(

double a,

int b)

static

void

add(

int a,

double b)

static

void

add(

double a,

double b)

static

void

add(

int a,

int b,

int c)

這種**是可行的,為什麼?

這就是方法的過載:

​ 在同乙個類中,允許存在同名方法,前提是他們的 引數列表:引數個數,引數順序,引數型別 至少有乙個存在區別 ==>即:兩同一不同

我們在呼叫時,會根據傳入的實參的 個數,順序,型別 ,來呼叫對應的方法

方法的值的傳遞機制分為兩種型別:

​ 基本型別引數 / 引用型別引數

觀察下列**:

public

static

void

main

(string[

] args)

static

void

change

(int num)

該**輸出結果為: 10 20 10

分析:首先初始化num=10,然後呼叫change方法,change方法中首先輸出10,然後改變num=20,然後輸出num=20,由於我們傳遞基本型別引數時,傳遞的是引數值,所以主方法中的num值並不會收到change方法中的影響,此時主方法中輸出的num還是10

public

static

void

main

(string[

] args)

;change

(arr)

; system.out.

println

(arr[0]

);}static

void

change

(int

arr)

該**輸出結果為: 10 20 20

分析:首先初始化int arr=,然後呼叫change方法,change方法中首先輸出10,然後改變arr[0]=20,然後輸出arr[0]=20,由於我們傳遞引用型別引數時,傳遞的是記憶體位址,在記憶體位址中,arr[0]的數值已經被修改為20,所以主方法中的arr[0]輸出為20;

總結:傳遞基本型別引數:傳遞的是引數值

initWithFrame方法的理解

initwithframe方法的理解 有時候,知道initwithframe方法如何用,但有弄明白initwithframe方法到底是什麼?那就通過查資料弄明白。1.initwithframe方法是什麼?initwithframe方法用來初始化並返回乙個新的檢視物件,根據指定的cgrect 尺寸 當...

initWithFrame方法的理解

有時候,知道initwithframe方法如何用,但是麼有弄明白initwithframe方法到底是什麼?那就通過查資料弄明白。initwithframe方法是什麼?initwithframe方法用來初始化並返回乙個新的檢視物件,根據指定的cgrect 尺寸 當然,其他ui物件,也有initwith...

構造方法的理解

1.1 構造方法名與類名相同.2 構造方法不返回任何值,也沒有返回型別.3 每個類可以有零個或多個構造方法.4 構造方法在建立物件時自動執行,一般不能顯式地直接呼叫.2.在例項化時被呼叫,new的時候,new有引數的方法調有參構造方法,反之調無參構造方法 3.在類的繼承中,子類的構造方法中缺省會有s...