什么是方法?
基本介紹
- 在其他語言中也叫函式
- System.out.println();類名.物件.方法;
- Java方法是陳述句的集合,它們在一起執行一個功能
- 方法是解決一類問題的步驟的有序集合
- 方法包含于類或者方法中
- 方法在程式中被創建,在其他地方被參考
- 設計方法的原則:方法的本意是功能塊,就是實作某個功能的陳述句塊的集合,
(我們設計方法的時候,最好保持方法的原子性,就是一個方法只完成一種功能,這樣有利于我們后期的拓展) - 方法的命名規則:大駝峰(和類名一樣)
運用實體
public class What {
public static void main(String[] args) {
int sum=add(1,2);
System.out.println(sum);
test();
}
//有回傳值的方法
//public為修飾符
//使用static? 在mian函式中不可直接呼叫,int前面加上static可讓What的類變數,讓add方法可以在main中直接呼叫
//add為方法名
//(int a,int b)為引數(形參)
public static int add(int a,int b){
//使用return? 此方法中有回傳值為int型別
//return作用:1.終止此方法 2.提供回傳值
return a+b;
}
//無回傳值的方法
public static void test(){
//列印九九乘法表
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i+"*"+j+"="+i*j);
System.out.print("\t");
}
System.out.println();
}
}
}
方法的定義
基本介紹
- Java方法類似于其他語言的函式,是一段用來完成特地功能的代碼片段;
- 一般情況下,定義一個方法包含以下語法:方法包含一個方法頭和一個方法體
- 一個方法的所有部分:
- 修飾符:這是可選的,告訴編譯器如何呼叫該方法,定義了該方法的訪問型別
- 回傳值型別:方法可能會有回傳值,returnValueType是方法回傳值的型別,
- 有些方法執行所需的操作,但是沒有回傳值,returnValueType關鍵字是void,
- 方法名:是方法的實際名字,方法名和引數表共同構成的方法簽名
- 引數型別:引數像一個占位符,當方法被呼叫時,傳遞值給引數,這個值被稱為實參或變數;
- 引數串列是指方法的引數型別、順序和引數個數;
- 引數是可選擇的,方法可以不包含任何引數
- 形式引數:在方法被呼叫時接受外界輸入的資料
- 呼叫方法時實際傳給方法的資料
- 方法體:方法體包含具體的陳述句,定義該方法的功能
- 定義陳述句:
修飾符 引數型別 方法名(引數型別 引數名){
方法體
return 回傳值;
}
運用實體
public class MethodDiyi {
public static void main(String[] args) {
MethodDiyi methodDiyi = new MethodDiyi();
int max=methodDiyi.max(4,8);
System.out.println(max);
}
//比大小
public int max(int a,int b){
int c=0;
if (a==b){
System.out.println("a=b");
return 0;//終止方法
}
if (a>b){
c=a;
}else {
c=b;
}
return c;
}
}
方法的多載
基本介紹
- 多載就是在一個類里,有相同的函式名(方法名),但形參不同的函式(方法)
- 方法的多載的規則:
- 方法名稱必須相同
- 引數串列必須不同(個數不同、或者引數型別不同、或者引數排列順序不同)
- 方法的回傳型別可以不同也可以相同
- 僅僅回傳型別不同不足以成為方法的多載
- 實作理論:方法名稱相同的時候,編譯器會根據呼叫方法的引數個數、引數型別等逐個去匹配,以選擇對應的方法,如果匹配失敗,則編譯器報錯
運用實體
public class Rename {
public static void main(String[] args) {
Rename rename = new Rename();
double max=rename.max(4,6);
System.out.println(max);
}
//兩個數比大小
public int max(int a,int b){
int x=0;
if (a==b){
System.out.println("a=b");
return 0;//終止方法
}
if (a>b){
x=a;
}else {
x=b;
}
return x;
}
//引數串列的個數不同:
//比大小
public int max(int a,int b,int c){
int x=0;
if (a==b&&b==c){
System.out.println("a=b=c");
return 0;//終止方法
}
if (a>b&&a>c){
x=a;
}else if(b>a&&b>c){
x=b;
}else{
x=c;
}
return x;
}
//引數串列的引數型別不同:
//兩個數比大小
public double max(double a,double b){
double x=0.0;
if (a==b){
System.out.println("a=b");
return 0;//終止方法
}
if (a>b){
x=a;
}else {
x=b;
}
return x;
}
}
遞回
基本介紹
- A方法呼叫B方法我們很容易理解,遞回就是A方法呼叫A方法,自己呼叫自己(階層n!)
- 利用遞回可以用簡單的程式來解決一些復雜的問題
- 遞回的能力在于用有限的陳述句來定義物件的無線集合
- 減輕我們的編程,增加計算機的負擔(堆疊:先進后出)
- 遞回結果包括兩個部分:
- 遞回頭:什么時候不呼叫自身方法,如果沒有頭,將陷入死回圈(如:階層n!——f(1)邊界)
- 遞回體:什么是需要呼叫自身方法
運用實體
public class DiGui {
public static void main(String[] args) {
DiGui diGui = new DiGui();
int sum=diGui.f(4);
System.out.println(sum);
}
//1! f(1)=1
//2! f(2)=2*f(1)
//3! f(3)=3*f(2)
//4! f(4)=4*f(3)
//邊界條件:邊界f(1)
//前階段:不斷呼叫自身
//回傳階段:由f(1)慢慢回推求n!
public int f(int n){
if (n==1){
return 1;
}else {
return n*f(n-1);
}
}
}
可變參量
基本介紹
- 本質上就是陣列
- jdk1.5后,Java支持傳遞同型別的可變引數給一個方法
- 在方法宣告中,在指定引數型別后加一個省略號(...)
- 一個方法中只能指定一個可變引數,他必須是方法的最后一個引數,任何普通引數必須在他前面宣告,
運用實體
public class BianCanLiang {
public static void main(String[] args) {
BianCanLiang bianCanLiang = new BianCanLiang();
bianCanLiang.test(4,8,56,47,5,9);
}
//可變引數——陣列
public void test(int j,int...i){
System.out.println(j);
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(i[2]);
System.out.println(i[3]);
System.out.println(i[4]);
}
}
命令列傳參
基本介紹
- 有時候你希望運行一個程式時候再傳遞給它訊息,這要靠傳遞命令列引數給main()函式
- 通過命令列傳遞引數(給的引數時傳遞給main()中的)給程式main()函式中,然后在運行程式,執行程式,得出結果
- 在包的路徑下,通過命令列來傳參和加載檔案的.class檔案,無法加載(需要退回包前面的scr檔案下——因為在命令列傳參)
運用實體
public class CmdDoc {
public static void main(String[] args) {
//陣列
for(int i=0;i<args.length;i++){
System.out.println("args["+i+"]="+args[i]);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/480142.html
標籤:其他
上一篇:Python簡單陳述句
下一篇:使用Qt制作的簡易音樂播放器
