一、所謂方法,就是用來解決一類問題的代碼的有序組合,是一個功能模塊。
一般情況下,定義一個方法的語法是:
**訪問修飾符 返回值類型 方法名(參數列表 ){
方法體
}**
其中:
1、 訪問修飾符:方法允許被訪問的權限範圍, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示該方法可以被其他任何代碼調用,其他幾種修飾符的使用在後面章節中會詳細講解滴
2、 返回值類型:方法返回值的類型,如果方法不返回任何值,則返回值類型指定爲 void ;如果方法具有返回值,則需要指定返回值的類型,並且在方法體中使用 return 語句返回值
3、 方法名:定義的方法的名字,必須使用合法的標識符
4、 參數列表:傳遞給方法的參數列表,參數可以有多個,多個參數間以逗號隔開,每個參數由參數類型和參數名組成,以空格隔開
根據方法是否帶參、是否帶返回值,可將方法分爲四類:
Ø 無參無返回值方法
Ø 無參帶返回值方法
Ø 帶參無返回值方法
Ø 帶參帶返回值方法
public class HelloWorld {
//定義了一個方法名爲 print 的方法,實現輸出信息功能
public void print() {
System.out.println("Hello World");
}
public static void main(String[] args){
//在 main 方法中調用 print 方法
HelloWorld test=new HelloWorld();
test.print();
}
}
二、無參無返回值方法的使用
public void showMyLove(){}
三、無參帶返回值
public class show {
public static void main(String[] args) {
// 創建對象,對象名爲hello
show hello=new show();
// int sum=hello.calcSum();
System.out.println("兩數之和爲:"+hello.calcSum());
}
public int calcSum() {
int a=5;
int b=4;
int sum=a+b;
return sum;
}
}
<1>如果方法的返回類型爲 void ,則方法中不能使用 return 返回值!
public void shoeInfo(){
return “java”;
}
<2> 方法的返回值最多只能有一個,不能返回多個值
public int getInfo(){
int score1=12;
int score2=34;
return score1,score2;
}
<3>方法返回值的類型必須兼容,例如,如果返回值類型爲 int ,則不能返回 String 型值
public int getInfo(){
String name=”hello”;
return name;
}
public class show {
public static void main(String[] args) {
// 創建對象,對象名爲hello
show hello=new show();
double avg =hello.calcAvg();
System.out.println("平均成績爲:" + avg);
}
// 定義一個返回值爲double類型的方法
public double calcAvg() {
double java = 92.5;
double php = 83.0;
double avg = (java + php) / 2; // 計算平均值
// 使用return返回值
return avg;
}
}
練習:
public class show {
public static void main(String[] args) {
// 創建對象,對象名爲hello
show hello=new show();
int max=hello.maxAge();
System.out.println("最大年齡爲:" + max);
}
// 定義一個返回值爲double類型的方法
public int maxAge() {
int[] age={18 ,23 ,21 ,19 ,25 ,29 ,17};
int max=age[0];
for(int i=0;i<age.length;i++){
if(age[i]>max){
max=age[i];
}
}
// 使用return返回值
return max;
}
}
運行結果:最大年齡爲:29
四、Java 中帶參無返回值方法的使用
public void show(String name){
System.out.println("歡迎你"+name);
}
HelloWorld hello=new HelloWorld();
hello.show("java");
<1>調用帶參方法時,必須保證實參的數量、類型、順序與形參一一對應
<2> 調用方法時,實參不需要指定數據類型,如
hello.show("java");
<3>方法的參數可以是基本數據類型,如 int、double 等,也可以是引用數據類型,如 String、數組等
import java.util.Arrays;
public class HelloWorld{
public static void main(String[] args){
HelloWorld hello=new HelloWorld();
int[] scores={1,2.3};
hello.print(scores);
}
public void print(int[] scores){
System.out.println(Arrays.toStrign(scores));
}
}
<4> 當方法參數有多個時,多個參數間以逗號分隔
public int clac(int num1,int num2){
int num3=num1+num2;
return num3;
}
public class show {
public static void main(String[] args) {
// 創建對象,對象名爲hello
show hello=new show();
// 調用方法,傳入兩門課程的成績
hello.calcAvg(94, 81);
}
/*
* 功能:計算兩門課程考試成績的平均分並輸出平均分
* 定義一個包含兩個參數的方法,用來傳入兩門課程的成績
*/
public void calcAvg(int num1,int num2){
double avg=(num1+num2)/2.0;
System.out.println("平均分:"+avg);
}
}
運行結果:平均分:87.5
五、Java 中帶參帶返回值方法的使用
public String show(Strign name){
return "歡迎你"+name+"!";
}
調用該方法:
HelloWorld hello=new HelloWorld();
String welcome=hello.shoe("JAVA");
System.out.println(welcome);
練習:
public class show {
public static void main(String[] args) {
// 創建對象,對象名爲hello
show hello=new show();
int[] scores={79,52,98,81};
//調用方法,傳入成績數組,並獲取成績的個數
int count=hello.sort(scores);
System.out.println("共有"+count+"個成績信息!");
}
/*
* 功能:將考試成績排序並輸出,返回成績的個數
* 定義一個包含整型數組參數的方法,傳入成績數組
* 使用Arrays類對成績數組進行排序並輸出
* 方法執行後返回數組中元素的個數
*/
public int sort(int[] scores){
Arrays.sort(scores);
System.out.println(Arrays.toString(scores));
//返回數組中元素的個數
return scores.length;
}
運行結果:
[52,79,81,98]
共有4個成績信息!
六、方法的重載
如果同一個類中包含了兩個或兩個以上方法名相同、方法參數的個數、順序或類型不同的方法,則稱爲方法的重載,也可稱該方法被重載了。如下所示 4 個方法名稱都爲 show ,但方法的參數有所不同,因此都屬於方法的重載:
如何區分調用的是哪個重載方法
當調用被重載的方法時, Java 會根據參數的個數和類型來判斷應該調用哪個重載方法,參數完全匹配的方法將被執行。如:
判斷方法重載的依據:
1、 必須是在同一個類中
2、 方法名相同
3、 方法參數的個數、順序或類型不同
4、 與方法的修飾符或返回值沒有關係
練習:
//導入java.util.Arrays;
import java.util.Arrays;
public class HelloWorld {
public static void main(String[] args) {
// 創建對象,對象名爲hello
HelloWorld hello = new HelloWorld();
// 調用方法並將返回值保存在變量中
int[] nums = hello.getArray(8);
// 將數組轉換爲字符串並輸出
System.out.println(Arrays.toString(nums));
}
/*
* 功能:創建指定長度的int型數組,並生成100以內隨機數爲數組中的每個元素賦值
* 定義一個帶參帶返回值的方法,通過參數傳入數組的長度,返回賦值後的數組
*/
public int[] getArray(int length) {
// 定義指定長度的整型數組
int[] nums = new int[length];
// 循環遍歷數組賦值
for (int i=0;i<nums.length;i++) {
// 產生一個100以內的隨機數,並賦值給數組的每個成員
nums[i]= (int)(Math.random() * 100);
}
return nums; // 返回賦值後的數組
}
}
ps:Math.random() 生成 0–1 的浮點數。
七、編程練習
定義一個包含整型數組參數的方法,用來接收成績數組,進行成績排序並輸出前三名
}}
import java.util.Arrays;
public class show {
public static void main(String[] args) {
// 創建對象,對象名爲hello
show hello=new show();
int[] scores={89 , -23 , 64 , 91 , 119 , 52 , 73};
hello.sort(scores);
}
//定義方法完成成績排序並輸出前三名的功能
public void sort(int[] scores){
Arrays.sort(scores);
int nums=0;//有效成績的個數
System.out.println("考試成績的前三名爲");
for ( int i = scores.length - 1;i>= 0&&nums<3; i-- ) {
if(scores[i]<0||scores[i]>100){
continue;
}
nums++;
System.out.println(scores[i]);
}
運行結果:
考試成績的前三名爲:
91
89
73