/*
1.以下程序不使用"方法",分析一下程序會存在哪些優缺點?
*以下的代碼都是完成兩個int類型數據的和,相同的代碼寫了三遍(只不過每一次參與求和的數據不同)
代碼沒有的到重複使用
*java語言中有一種機制:
-某種功能代碼只需要寫一遍
-要使用這個功能,只需要給這個功能傳遞具體的數據
-這個功能完成後返回一個最終的結果
-這樣就可以提高代碼的複用性【這就是"方法"】
使用這個方法我們稱爲 "調用/invoke"
2.方法的本質:是一段代碼片段,可以完成特定功能,可以重複利用
方法在c語言叫做函數:function,可以理解爲方法就是函數
3.注意:方法定義在類體中。而且獨立存在,所以說不存在方法體裏面在嵌套使用方法體
4.一個類中可以定義多個方法,方法編寫的位置沒有先後順序,可以隨意
5.方法體中不能再定義方法!!!!!!!!!!!!!!
6.方法體中的代碼有順序要求!!!!!!!!!!!!!!
-java代碼遵守自上而下的順序執行
7.1.方法怎麼定義:語法結構:
[修飾符列表]返回值類型 方法名(形式參數列表)
{
方法體;
}
2.對以上的語法結構進行解釋說明:
2.1、關於修飾符列表
*是一個可選項,不是必選項
*目前統一寫成:public static
*方法的修飾符列表中有static關鍵字的話,怎麼調用此方法?
-類名.方法名(實際參數列表);
2.2、關於返回值類型
*什麼是返回值:
-需要調用的方法返回給用戶的一個值,一個結果
-有些像垃圾回收機制的方法就不需要返回值,但是是作用在程序運行中
-java中規定:當一個方法執行結束之後不返回任何數據的話,
返回值類型位置必須編寫: void關鍵字
-此時不能再編寫"return 返回值;"這樣的java語句
-返回值類型若不是void,表示這個方法執行結束之後必須返回一個具體的數值。
當方法執行結束的時候沒有返回任何數據的話編譯器報錯。
-注意:return返回值的類型需要和方法體的"返回值類型"保持一致
否則編譯器報錯。
-"return 返回值 ;"
*返回值類型?
-返回值是一個具體存在數據,數據都是有類型的,此處需要指定的
是返回值的具體類型
*只要帶有return關鍵字的語句執行,return語句所在的方法結束。
【不是JVM結束,是return所在的方法結束】
2.2、方法名:
*只要是合法的標識符就行
*見名知意
*首字母小寫,後面每個單詞首字母大寫
2.3、形式參數列表:
*形參是局部變量:int a,double b,float c,String d....
*多個形參之間用"逗號"隔開
*形參的個數可以使0-N個
*形參中起決定性作用的是形參的數據類型,形參的名字就是局部變量的名字
*方法在調用的時候,收集給這個方法傳遞的真實數據被稱爲:實際參數
例如:
方法定義
public static int sum(int a,int b)
{
}
方法調用
sum("bac","sss");//編譯報錯,因爲兩個類型和形參不匹配
sum(10,20);//編譯通過,兩個類型和形參類型匹配【實參列表】
2.4、方法體:
*方法體必須由大括號括起來,方法體中的代碼有順序,遵循自上而下的順序依次執行。
並且方法體由java語句構成,每一個java語句以"分號;"結尾
3.方法怎麼調用:
*重點:方法只定義不去調用的時候是不會執行的,只有在調用的時候纔會執行
*語法規則:【前提是方法的修飾符列表中有static】
-類名.方法名(實參列表);//這是一條java語句,表示調用某個類的某個方法,傳遞這樣的實參
*/
//public表示公開的
//class表示定義類
//method是一個類名
//整句話連起來:表示定義一個公開的類,起名method,由於是公開的類,所以源文件名必須是method
public class method
{
//這個大括號括起來的就是一個類體
//類體中不能直接編寫java語句,除聲明變量之外
//方法出現在類體中
//主方法
//public表示公開的
//static表示靜態的
//void表示方法執行結束之後不返回任何數據
//main是主方法
//(String[] args):形式參數列表,其中String[]是一種引用數據類型,args是一個局部變量的變量名
//所以以下只有args這個局部變量的變量名是隨意的
//主方法就需要這樣固定編寫,這是程序的入口。
public static void main(String[] args)//這個主方法相當於調用了虛擬機
{
//因爲自動調用了虛擬機,這裏的程序一定會執行
//main方法是JVM負責調用的,是一個入口位置
//從此處作爲起點開始執行程序
//既然是這樣,我們就可以在這裏編寫java語言來調用其它的方法
//因爲sum方法是在主方法的類體裏面
//可以調用method類的sum方法,傳遞兩個實參
method.sum(10,20);//實際上執行到這裏main方法暫停了,進入sum方法執行,sum方法執行結束後表示main方法的135行結束
//注意:第135行的程序執行不結束,無法執行第141行代碼。是一種順序結構
//一個方法可以被重複使用,重複調用
method.sum(20,10);
//需求:計算10和20的和,並將結果輸出
int a=10;
int b=20;
int c=a+b;
System.out.println(a+"+"b+"="+c);
//需求:計算10和200的和,並將結果輸出
int a=10;
int b=200;
int c=a+b;
System.out.println(a+"+"b+"="+c);
//需求:計算10和2000的和,並將結果輸出
int a=10;
int b=2000;
int c=a+b;
System.out.println(a+"+"b+"="+c);
}
//在這裏寫自定義方法:並不是程序的入口
//方法作用:計算兩個int類型數據的和,不要求返回結果,但是要求將結果直接輸出到控制檯
//修飾符列表:public static
//返回值類型:void
//方法名:sum
//形式參數列表(int x,int y)
//方法體:主要任務是求和之後輸出計算結果
public static void sum(int i,int j)//這個方法沒有調用虛擬機,所以不調用的話不會執行
{
System.out.println(i+"+"+j+"="+(i+j));
//調用dosome方法
//方法調用不一定在main方法中,也可以在其它方法中。
//只要程序可以執行到的位置,都可以去調用其它方法
method.dosome();
}
public static void dosome(){
System.out.println("dosome");
}
}