方法(函式)定義
方法(函式)格式:
@1、public 訪問許可權修飾符,公共的,誰都可以引用
@2、static 靜態修飾符,描述的方法可以直接呼叫
@3、void 表示返回值為空,即無返回值
@4、getName 方法名即函式名,命名規範:見名知意,首字母小寫,遵守駝峰命名法
public static void getName(){
方法體;
}
呼叫方法:
getName()
形參與實參
方法的形參與實參:
@1、呼叫方法時傳入的引數,稱為實參
@2、在方法定義時的引數稱為形參
package test_java;
import java.util.Scanner;
public class Test28 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("請輸入函式:");
int line = input.nextInt(); //此時控制檯才的提示輸入游標才會出現,值賦給變數Iine
//在呼叫方法時傳入的引數,稱為實參
printStar(line);
}
/**
帶引數的方法
形參:在方法定義時的引數稱為形參
*/
public static void printStar(int num){
//外層迴圈控制行數
for(int i =1;i<=num;i++){
//內層迴圈控制列數,第一行1列,第二行2列...
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
方法的返回值
方法的返回值:
return:結束方法[遇見return表示方法的結束]
返回值:就是功能的結果。由return帶給呼叫者
注意:
@1、若當前方法沒有返回值型別,即返回值型別是void,那麼當前方法中可以不寫return
@2、return即表示結束一個方法,也可以將返回值返回給呼叫當前方法的呼叫者
@3、return返回值是一次只能返回一個值,不可以以返回多個值
@4、一個方法中可以有多個return,但被執行的只能有一個,所以需要判斷
注意:
@1、呼叫方法時,如果該方法有返回值,需要定義一個資料型別接收該值【所以,定義方法時,方法前面的型別即為該方法返回值的型別】
@2、定義接收的資料型別需要包含或等於函式返回值的資料型別
@3、呼叫函式都寫在主函式裡去才能呼叫
@4、當定義的函式有返回值時,每一個判斷出口都要有一個return,因為定義了函式有返回值的
函式有返回值:
public class Test29 {
public static void main(String[] args) {
//呼叫方法
Scanner input = new Scanner(System.in);
System.out.println("請輸入年份: ");
int year = input.nextInt();
boolean bool = isRunNian(year);//函式有返回值,所以需要定義一個資料型別去接收
if(bool){
System.out.println("閏年");
}else{
System.out.println("平年");
}
}
public static boolean isRunNian(int year){ //這裡的boolean就是該方法返回值的型別,所以要先定義起來
if(year%4==0 && year%100!=0 || year%400==0){
return true;
}else{
return false;//每一個判斷出口都必須要有一個return,因為定義了函式是有返回值的
}
}
}
函式無返回值:
public static void print(){
for(int i =0;i<10;i++){
if(i==5){
return;
// return表示方法的結束;這裡的return就沒有返回值(因為定義的是void的函式型別),因此就不用接收,直接呼叫該方法print()
}
System.out.println(i); //因此列印的i 只到4
}
}
直接呼叫即可:print()
舉例2:
/**
方法的返回值:2、根據傳入的引數數量列印直角三角形
*/
package test_java;
import java.util.Scanner;
public class Test30 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("請輸入一個三角形的行數: ");
int num = input.nextInt();
printTriangle(num);
}
public static void printTriangle(int line){
for(int i=1;i<=line;i++){
//內層迴圈1控制空格的列數
for(int j=i;j<line;j++){
System.out.print(" ");
}
//內層迴圈2控制*號的列數
for(int k=1;k<=i*2-1;k++){
System.out.print("*");
}
System.out.println();
}
}
}
方法的過載
在類中可以建立多個方法,它們具有相同的名字,但具有不同的引數和不同的定義;
返回值不能作為過載的條件。
如:
public void method(int a){...}
public void method(char c){...}
舉例:
/**
overloading method
方法的過載:在同一個類中,方法名相同引數列表不同,返回值不能作為過載的條件
*/
package test_java;
public class Test31 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = add(12,20);
System.out.println(sum);
}
public static int add(int a , int b){ //所以該方法的返回值型別是int
return a+b;
}
public static float add(float a,float b){ //所以該方法的返回值型別是 float
return a+b;
}
}