JavaSE
五、Method方法
- 方法的基本調用
public static void main(String[] args) {
//直接(兩者都是static)調用:這邊的參數叫實參,實參可以傳遞給到形參
int sum = add(1, 2);
System.out.println(sum);
}
//add方法:這邊add的參數叫形式參數,形參的名字可以随便寫啥,但是形參和實參類型要一一對應
public static int add(int a,int b){
//a+b就是方法體
return a+b;
}
}
public static void main(String[] args) {
//調用test方法
test();
}
public static void test(){//void表示傳回為空
for (int i = 0; i <= 1000; i++) {
if (i % 5 == 0) {
System.out.print(i + "\t");
}
if (i % (5 * 3) == 0) {
System.out.print("\n");//或者System.out.println();
}
}
}
public static void main(String[] args) {
int max = max(12, 13);
System.out.println(max);//把傳回值打出來
}
//比大小
public static int max(int num1,int num2){
int result = 0;
if(num1==num2){
System.out.println("num1=num2");
return 0;//return還可以終止方法
}
else if(num1>num2) {
result = num1;
}else {
result = num2;
}
return result;//return給他放在外面來,整個result接收,但是記得初始化
}
public static void main(String[] args) {
int max1 = max(1,2);
System.out.println(max1);
}
public static int max(int num1,int num2){
if(num1 == num2){
System.out.println("num1=num2");
return 0;
}else if(num1>num2){
return num1;
}else{
return num2;
}
}
- 方法的重載
public static void main(String[] args) {
double max = max(12, 13);
System.out.println(max);//把傳回值打出來
}
public static int max(int num1,int num2){
int result = 0;
if(num1==num2){
System.out.println("兩者相等");
return 0;
}else if (num1>num2){
result = num1;
}else if (num1<num2){
result = num2;
}
return result;
}
public static double max(double num1,double num2){
double result = 0;
if(num1==num2){
System.out.println("兩者相等");
return 0;
}else if (num1>num2){
result = num1;
}else if (num1<num2){
result = num2;
}
return result;
}
- 指令行傳參:
//args.length 數組長度 psvm的main方法中是可以傳遞參數的
for (int i = 0; i < args.length; i++) {//這個是在周遊參數
System.out.println("args["+i+"]:"+args[i]);
}
- 可變參數
public static void main(String[] args) {
//可變參數可以了解為:不知道需要傳入多少參數而設定的,可以避免方法的多次重載
Demo4 demo4 = new Demo4();
demo4.test(1,2,3,4,5);
/*
下面的方法沒有static,如果有直接:
test(1,2,3,4,5);
*/
}
//用...表示可以有很多參數(可變參數,并且其他參數必須放在最前面
public void test(int x,int... i){
System.out.println(i[2]);
System.out.println(x);
}
public static void main(String[] args) {
printMax(3,31,4,56,7,3);
printMax(new double[]{1,2,3});
}
//找最大值
public static void printMax(double... numbers){
if(numbers.length==0){
System.out.println("No argument passed");
return;
}
double result = numbers[0];
for(int i =1;i<numbers.length;i++){
if(numbers[i]>result){
result = numbers[i];
}
}
System.out.println(result);
}
- 遞歸
public static void main(String[] args) {
Demo6 demo6 = new Demo6();
demo6.test();
}
public void test(){
test();
}
//自己調用自己,抛出異常:棧溢出
public static void main(String[] args) {
System.out.println(f(5));
}
//自己調用自己,階層的例子
/*遞歸需要的條件:
邊界條件:邊界(最後一個就會執行到底
前階段:一直調用的時候
傳回階段n*n-1
棧機制:壓了好幾個棧 要考慮記憶體的情況
學到的是遞歸思想:一層一層的往下解決
*/
public static int f(int n){
if(n==1){
return 1;
}else {
return n*f(n-1);
}
}