日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Java实验方法参数传递与递归_4.3类的结构之二:方法(return,重载,可变个数形参,值传递,递归)...

發布時間:2024/7/5 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java实验方法参数传递与递归_4.3类的结构之二:方法(return,重载,可变个数形参,值传递,递归)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

類的設計中,兩個重要結構之二:方法

* 方法:描述類應該具有的功能。

* 比如:Math類:sqrt()\random()\ ..

* Scanner類:nextXxx() ..

* Arrays類:sort()\binarySearch()\toString()\equals()\..

*

* 1.舉例:

* public void eat(){}

* public void sleep(int hour){}

* public String getName(){}

* public String getNation(String nation){}

*

*

* 2.方法的聲明:權限修飾符 返回值類型 方法名(形參列表){

* 方法體

* }

*

* 3.說明:

* 3.1關于權限修飾符:默認方法的權限修飾符為public

* Java規定的4種權限修飾符 public,private,缺省,protected

*

* 3.2返回值類型:有返回值 vs 沒有返回值

* 3.2.1如果方法有返回值,則必須在方法聲明時,指定返回值的類型、同時、方法中,

* 需要使用return關鍵字來返回指定類型的變量或常量。"return 數據"

* 如果方法沒有返回值,則方法聲明時,使用void來表示。通常,沒有返回值的方法中,

* 就使用return。但是,如果使用的話,只能"return;"表示結束此方法的意思

*

* 3.2.2我們定義方法該不該有返回值?

* ①題目要求

* ②憑經驗,具體問題具體分析

*

* 3.3方法名:屬于標識符,遵循標識符的規則和規范:“見名知意”

*

* 3.4形參列表:方法可以聲明0個,1個,或多個形參。

* 3.4.1格式:數據類型1 形參1, 數據類型2 形參2,......

* 3.4.2我們定義方法時,該不該定義形參?

* ①題目要求

* ②憑經驗,具體問題具體分析

*

* 3.5方法體:方法功能的體現。

* 4.方法的使用中,可以調用當前類的屬性或方法

* 特殊的:方法A中又調用了方法A :遞歸方法

* 方法中,不可以定義方法

return關鍵字:

1.使用范圍:使用在方法體中

2.作用:

①結束方法

②針對于有返回值類型的方法,使用“return 數據”方法返回所要的數據

3.注意點:return關鍵字后面不可以聲明執行語句。

1.方法的重載的概念

在同一個類中,允許存在一個以上的同名方法,只要它們的參數個數或者參數類型不同即可

總結:

"兩同一不同”:同一個類、相同方法名

參數列表不同:參數個數不同,參數類型不同

2.

構成重載的舉例:

舉例一:Arrays類中重載的sort()/binarySearch();printStream中的println()

舉例二:

//如下的4個方法構成了重載

public void getSum(int i, int j) {

System.out.println("1");

}

public void getSum(double d1, double d2) {

System.out.println("2");

}

public void getSum(String s, int i) {

System.out.println("3");

}

public void getSum(int i, String s) {

System.out.println("4");

}

/*public int getSum(int i,int j){

return 0;

}*/

不構成重載的舉例:

//如下三個方法不構成重載

/*public int getSum(int i,int j){

return 0;

}

public void getSum(int m,int n){

}

private void getSum(int i,int j){

}

*/

3.如何判斷是否構成方法的重載?

嚴格按照定義判斷:兩同一不同。

跟方法的權限修飾符、返回值類型、形參變量名、方法體都沒有關系!

4.如何確定類中某一個方法的調用:

方法名 -----> 參數列表

面試題:方法的重載與重寫的區別?

沒有關系

throws\throw

String\StringBuffer\StringBuilder

Collection\Collectons

final\finally\finalize

...

抽象類、接口

sleep() /wait()

1.使用說明:

* 1.jdk 5.0新增的內容

* 2.具體使用:

*? 2.1 可變個數形參的格式:數據類型 ... 變量名

*? 2.2 當調用可變個數形參的方法時,傳入的參數個數可以是:0個,1個,2個,....

*? 2.3 可變個數形參的方法與本類中方法名相同,形參不同的方法之間構成重載

*? 2.4 可變個數形參的方法與本類中方法名相同,形參類型也相同的數組之間不構成重載。(二者不能共存)

*? 2.5 可變個數形參在方法的形參中,必須聲明在末尾

*? 2.6 可變個數形參在方法的形參中,最多只能聲明一個可變形參。

2.舉例說明:

public void show(int i){

}

public void show(String s){

System.out.println("show(String)");

}

public void show(String ... strs){

System.out.println("show(String ... strs)");

for(int i=0;i

System.out.println(strs[i]);

}

}

//不能與上一個方法同時存在。

/*public void show(String[] strs){

System.out.println("show(String ... strs)");

}*/

調用時:

test.show(12);

test.show("hello");

/*test.show("hello","world");

test.show();*/

test.show("AA","BB","CC");

test.show(new String[]{"AA","BB","CC"});

1.針對于方法內變量的賦值舉例:

System.out.println("***********基本數據類型:***************");

int m = 10;

int n = m;

System.out.println("m=" + m + ",n=" + n);

n = 20;

System.out.println("m=" + m + ",n=" + n);

System.out.println("*****************");

System.out.println("***********引用數據類型:***************");

Order o1 = new Order();

o1.orderId = 1001;

Order o2 = o1;//賦值以后,o1和o2的地址值相同,都指向了堆空間中的同一個對象實體。

System.out.println("o1.orderId=" + o1.orderId + ",o2.orderId=" + o2.orderId);

o2.orderId = 1002;

System.out.println("o1.orderId=" + o1.orderId + ",o2.orderId=" + o2.orderId);

規則:

* 如果變量是基本數據類型,此時賦值的是變量所保存的數據值。

* 如果變量是引用數據類型,此時賦值的是變量所保存的數據的地址值。

2.針對于方法的參數概念

形參:方法定義時,聲明的小括號內的參數

實參:方法調用時,實際傳遞給形參的數據

3.java中參數傳遞機制:值傳遞

規則:

* 如果參數是基本數據類型,此時實參賦給形參的是實參真實存儲的數據值。

* 如果參數是引用數據類型,此時實參賦給形參的是實參存儲數據的地址值。

推廣:

* 如果變量是基本數據類型,此時賦值的是變量所保存的數據值。

* 如果變量是引用數據類型,此時賦值的是變量所保存的數據的地址值。

4.典型例題與內存解析:

【例題1】

【例題2】

1.定義:

遞歸方法:一個方法體內調用它自身。

2.如何理解遞歸方法?

>方法遞歸包含了一種隱式的循環,它會重復執行某段代碼,但這種重復執行無須循環控制。

>遞歸一定要向已知方向遞歸,否則這種遞歸就變成了無窮遞歸,類似于死循環。

3.舉例

//例1:計算1-100之間所有自然數的和

public int getSum(int n) {

if (n == 1) {

return 1;

} else {

return n + getSum(n - 1);

}

}

//例2:計算1-100之間所有自然數的乘積

public int getSum1(int n) {

if (n == 1) {

return 1;

} else {

return n * getSum1(n - 1);

}

}

//例3:已知有一個數列:f(0)=1,f(1)=4,f(n+2)=2*f(n+1)+f(n),

//其中n是大于0的整數,求f(10)的值

public int f(int n) {

if (n == 0) {

return 1;

} else if (n == 1) {

return 4;

} else {

//? ? ? ? ? ? return f(n+2)-2*f(n+1);

return 2 * f(n - 1) + f(n - 2);

}

}

//例4.斐波那契數列1 1 2 3 5 8 13 21 34 55

//例5.漢諾塔問題

//例6.快排

總結

以上是生活随笔為你收集整理的Java实验方法参数传递与递归_4.3类的结构之二:方法(return,重载,可变个数形参,值传递,递归)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。