1. 程式人生 > 其它 >Java方法入門

Java方法入門

什麼是方法

【狂神說Java】Java零基礎學習視訊通俗易懂嗶哩嗶哩bilibili

Java方法是語句的集合,他們在一起執行一個功能。

java中沒有函式

方法是解決一類問題的步驟的有序組合;方法包含於類或物件中;方法在程式中被建立,在其他地方被引用。

方法設計原則:方法本意是實現某個功能的語句快集合,因此最好一個方法只實現一個功能,保證方法的原子性。

note:方法的命名規則——首字母是小寫 + 駝峰命名

方法呼叫

物件名.方法名(實參列表);

如果返回是一個值,則方法呼叫通常被當作一個值,如果方法返回void,則方法呼叫一般是print之類的。

public class Demo01 {
//main方法
public static void main(String[] args) {
//實參:實際呼叫時傳遞的引數
int sum = add(1,2);
System.out.println(sum);
}

//加法
//形參,用來定義作用
public static int add(int a,int b){
return a+b;
}
}


public class Demo02 {
public static void main(String[] args) {
System.out.println(max(100,33));
}

//比大小
//static修飾符:可以直接呼叫,不需要物件
public static int max(int num1,int num2){
//int result;

if(num1>num2)
return num1;
else if (num1==num2){
System.out.println("num1 == num2");
return 0;//終止方法
}
else return num2;
}
}

值傳遞和引用傳遞

java都是值傳遞。jvm中會詳解

方法過載

定義:同樣的方法名,但形式引數不同。

//過載的實現由編譯器自動匹配對應的方法。
public class Demo02 {
public static void main(String[] args) {
double max = max(100,33);
System.out.println(max);
}

//比大小
//static修飾符:可以直接呼叫,不需要物件
public static int max(int num1,int num2){
//int result;

if(num1>num2)
return num1;
else if (num1==num2){
System.out.println("num1 == num2");
return 0;//終止方法
}
else return num2;
}

public static double max(double num1,double num2){
//int result;

if(num1>num2)
return num1;
else if (num1==num2){
System.out.println("num1 == num2");
return 0;//終止方法
}
else return num2;
}


}

命令列傳參

用命令列傳引數,需要cd../退到src中,再輸入路徑才能執行。

另外,psvm也可以傳入引數。

public class CommandLine {
public static void main(String[] args) {
//args.length 陣列長度
for (int i = 0; i < args.length; i++) {
System.out.println("args["+i+"] : "+args[i]);
}
}
}

可變引數

public class Demo04 {
public static void main(String[] args) {
//呼叫可變引數的方法
printMax(1,34,34.43,23.32);//傳遞可變長例子
printMax(new double[]{1,3.4,1.3,1.2,4.4});//傳入陣列
}
public static void printMax(double... numbers){
if (numbers.length == 0){
System.out.println("no numbers");
}

double result = numbers[0];

for (int i = 0; i < numbers.length; i++) {
if (numbers[i]>result)
result = numbers[i];
}
System.out.println("max is "+result);
}

}

遞迴*

遞迴即為自己呼叫自己。

關鍵點:

public class Demo06 {
public static void main(String[] args) {
//實現遞迴求階乘
System.out.println(f(5));
}

public static int f(int n){

if (n==1){
return 1;
}else {
return n*f(n-1);
}
}

}

畫圖分析:

前階段,返回階段。java中遞迴都用的棧實現。

但是大資料最好不要用遞迴,會影響機器效能。

小作業:計算器