1.方法定義及格式:完成特定功能的代碼塊
(1)格式:
修飾符 返回值類型 方法名(參數類型 參數名1,參數類型 參數名2……){
方法體語句;
Return返回值;
}
(2)詳細解釋
返回值類型:就是功能結果的數據類型
方法名:符合規則即可,方便調用
參數
實際參數:就是實際參與運算
形式參數:方法定義上的,用於接收實際參數的
參數類型:參數的數據類型
方法體語句;完成功能的代碼
Return:結束方法
返回值:由return帶給調用者
(3)要想寫好一個方法,就必須明確兩個東西:
A:返回值類型
結果的數據類型
B:參數列表
你要傳遞幾個參數,以及每個參數數據類型.
舉例1:求兩個數據之和
import java.util.Scanner;
public class One {
public static void main(String[] args) {
}//main方法是虛擬機調用,但是現在方法裏面沒有東西,所以沒有結果
public static int sum(int a,int b) {
int c=a+b;
return c;
}
}
方法的特點:不調用不執行
改進:如何調用呢?
有明確返回值的調用
(1)單獨調用
(2)輸出調用
import java.util.Scanner;
public class One {
public static void main(String[] args) {
int x=10;
int y=20;
//sum(x,y);//單獨調用沒有意義
System.out.println(sum(x,y));
}
public static int sum(int a,int b) {
int c=a+b;
return c;
}
}
(3)賦值調用
public static void main(String[] args) {//程序從main方法開始執行
int x=10;//定義2個int類型的變量
int y=20;
int result=sum(x,y);//調用方法
System.out.println(result);//輸出result
}
public static int sum(int a,int b) {//分別把x,y的值給了a,b
return a+b;//計算結果,通過return返回
}
}
舉例2.鍵盤錄入兩個數據
import java.util.Scanner;
public class One {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("請輸入第一個數據");
int a=sc.nextInt();
System.out.println("請輸入第二個數據");
int b=sc.nextInt();
int result=getMax(a,b);
System.out.println(result);
}
public static int getMax(int a,int b) {
if(a>b) {
return a;
}else {
return b;
}
}
}
舉例3.鍵盤錄入兩個數據是否相等
使用布爾類型
import java.util.Scanner;
public class One {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("請輸入第一個數據");
int a=sc.nextInt();
System.out.println("請輸入第二個數據");
int b=sc.nextInt();
boolean flag=compare(a,b);
System.out.println(flag);
}
public static boolean compare(int a,int b) {
if (a==b) {
return true;
}else {
return false;
//三元改進
//boolean flag=((a==b)?true:false);
//return flag;
}
}
}
舉例4:鍵盤錄入3個數據得出最大值
import java.util.Scanner;
public class One {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("請輸入第一個數據");
int a=sc.nextInt();
System.out.println("請輸入第二個數據");
int b=sc.nextInt();
System.out.println("請輸入第三個數據");
int c=sc.nextInt();
int max=getMax(a,b,c);
System.out.println(max);
}
public static int getMax(int a,int b,int c) {
if (a>b) {
if(a>c) {
return a;
}
else {
return c;
}
}
else {
if(b>c) {
return b;
}else {
return c;
}
}
}
}
小結:
(1)方法與方法是平級關係,不可嵌套使用;
(2)方法定義的參數之間用逗號隔開 ;
(3)方法調用的時候不用在傳遞數據類型;
(4)如果方法有明確的返回值,一定要有return帶回一個值。
舉例5:在控制檯輸入如下圖形
返回值類型:這個時候沒有明確返回值,但不寫不行,所以記住這裏是void
參數列表:int m,int n
void類型返回值的方法調用
import java.util.Scanner;
public class One {
public static void main(String[] args) {
printXing(3,4);
printXing(6,7);
printXing(8,9);
}
public static void printXing(int m,int n) {
for(int x=0;x<m;x++) {
for(int y=0;y<n;y++) {
System.out.print("*");
}
System.out.println();
}
}
}
方法二:
import java.util.Scanner;
public class One {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("請輸入行數");
int m=sc.nextInt();
System.out.print("請輸入列數");
int n=sc.nextInt();
printXing(m,n);
}
public static void printXing(int m,int n) {
for(int x=0;x<m;x++) {
for(int y=0;y<n;y++) {
System.out.print("*");
}
System.out.println();
}
}
}
舉例6:輸出nn乘法表
import java.util.Scanner;
public class One {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("請輸入n的值");
int n=sc.nextInt();
printNn(n);
}
public static void printNn(int n) {
for(int x=1;x<=n;x++) {
for(int y=1;y<=x;y++) {
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
}
小結:
(1)方法功能相同,參數列表不同,Java允許他們起一樣的名字,這種情況叫方法重載;
(2)特點:與返回值類型無關,只看方法名和參數列表
在調用時,虛擬機通過參數列表的不同來區分同名方法;
(3)Jvm會根據不同的參數方法調用不同的功能。
舉例:求兩個數之和
import java.util.Scanner;
public class One {
public static void main(String[] args) {
System.out.println(sum(10,20));
System.out.println(sum(10,20,30));
}
public static int sum(int n,int m) {
return m+n;
}
public static int sum(int n,int m,int c) {
return m+n+c;
}
}
另一種案例:類型不一樣的求和
import java.util.Scanner;
public class One {
public static void main(String[] args) {
byte b1=3;
byte b2=4;
System.out.println(compare(b1,b2));
}
public static boolean compare(byte a,byte b){
return a==b;
}
public static boolean compare(short a,short b){
return a==b;
}
public static boolean compare(int a,int b){
return a==b;
}
}