Java方法

在前面咱們常用到System.out.println(),那麼它是什麼呢?java

  • println()是一個方法。
  • System是系統類。
  • out是標準輸出對象。

這句話的用法是調用系統類System中的標準輸出對象out中的方法println()。數組

那麼什麼是方法呢?

java方法是語句的集合,他們在一塊兒執行一個功能。函數

  • 方法是解決一類問題的步驟的有序組合。
  • 方法包含於類或者對象中。
  • 方法在程序中被建立,在其餘地方被引用。

方法的優勢

  1. 程序變得簡短清晰。
  2. 有利於程序維護。
  3. 能夠提升程序開發的效率。
  4. 提升了代碼的重用性。

方法的命名規則

  1. 方法的名字的第一個單詞應該以小寫字母開始,後面的單詞則用大寫字母開頭寫,不使用鏈接符。
  2. 下劃線可能出如今JUnit測試方法名稱中用以分隔名稱的邏輯組件。一個典型的模式是:test<MethodUnderTest>_<state>,例如testPop_emptyStack。

方法的定義

修飾符 返回值類型 方法名(參數類型 參數名){
。。。
方法體
。。。
return 返回值;
}
  • 修飾符是可選的,告訴編譯器如何調用該方法。定義了該方法的訪問類型。
  • 方法可能會返回值。有些方法執行所需的操做,但沒有返回值,這種狀況下returnValueType是關鍵字void。
  • 參數像是一個佔位符。當方法被調用時,傳遞值給參數。這個值稱爲實參或者變量。參數是可選的,參數能夠有多個,方法能夠不包含任何參數。  


方法調用

Java支持兩種調用方法的方式,根據方法是否返回值來選擇。測試

當程序調用一個方法時,程序的控制權交給了被調用的方法。當被調用方法的返回語句執行或者到達方法體閉括號時候交換控制權給程序。spa

當方法返回一個值的時候,方法調用一般被看成一個值。例如:命令行

int larger=max(30,40);

若是方法返回值是void(能夠有參數),方法調用必定是一條語句例如,方法println()返回void。下面的調用是個語句:對象

public void ending(){
System.out.println("Thanking for view!")
}

沒法從靜態上下文中引用非靜態方法。  blog

package pkg2020華南虎;

/**
 *
 * @author yl
 */
public class TestMax {

    public static void main(String[] args) {
        int i = 20;
        int j = 23;
        int k = max(i, j);
        System.out.println("Max number is "+k+".");
    }

    public static int max(int a, int b) {
        int result;
        if (a > b) {
            result = a;
        } else {
            result = b;
        }
        return result;
    }
}

main方法是被JVM調用 的,除此以外,main方法和其餘方法沒什麼區別。String【】代表參數是字符串數組。繼承


void關鍵字  

package pkg2020華南虎;

/**
 *
 * @author yl
 */
public class TestVoidMethod {

    public static void main(String[] args) {
        printGrade(78.5);
    }

    static void printGrade(double score) {
        if (score > 90) {
            System.out.println(score + " is perfect.");
        } else if (score > 60) {
            System.out.println(score + " is OK.");
        } else {
            System.out.println(score + " is Flunk.");
        }
    }
}

這裏printGrade方法是一個void類型方法,它不返回值。內存

一個void方法的調用必定是一個語句。  


 

經過值傳遞參數

調用一個方法的時候須要提供參數,你必須按照參數列表指定的順序提供。

例如,下面的方法n次打印一個消息。

public static void nPrintln(String message,int n){
for(int i<0;i<n;i++){
System.out.println(message);
}
}

下面的例子演示按值傳遞的效果。

該程序建立一個方法,該方法用於交換兩個變量。

package pkg2020華南虎;

/**
 *
 * @author yl
 */
public class SwapValue {

    public static void main(String[] args) {
        int num1 = 1;
        int num2 = 5;
        swap(num1, num2);
        System.out.println("num1,num2:" + num1 + "," + num2);
    }

    static void swap(int a, int b) {
        int temp;
        temp = a;
        a = b;
        b = temp;
    }
}

傳遞兩個參數調用swap方法。可是,方法被調用後,實參的值並無改變。  


方法的重載

上面使用的max方法僅僅適用於int類型的數據,可是若是你想要的到兩個浮點型數據的最大值呢?

解決方法是建立另外一個有相同名字可是參數不一樣的方法,以下代碼所示:

public static double max(double num1,double num2){
int result;
if(num1>num2) 
result=num1;
else
result=num2;
return result;
}

若是你調用max方法時傳遞的是int型參數,則int型參數的max方法會被調用。

若是傳遞的是double型參數,則double類型的max方法體會被調用,這稱爲方法重載。

即一個類的兩個方法擁有相同的名字,可是有不一樣的參數列表。Java編譯器根據方法簽名判斷哪一個方法應該被調用。方法重載可讓程序更清晰易讀。執行密切相關任務的方法應該使用相同的名字。


變量做用域  


命令行參數的使用  

 

package pkg2020華南虎;

/**
 *
 * @author yl
 */
public class CommandLine {
    public static void main(String[] args) {
        for(int i=0;i<args.length;i++){
            System.out.println("args["+i+"]"+args[i]);
        }
    }
}

構造方法  

 當一個對象被建立的時候,構造方法用來初始化該對象。構造方法和它所在類的名字相同,但構造方法沒有返回值。

一般會使用構造方法給一個類的實例變量賦初值,或者執行其餘必要的步驟來建立一個完整的對象。

無論你是否自定義構造方法,全部的類都有構造方法,由於Java自動提供了一個默認構造方法,默認構造方法的訪問修改符和類的訪問修改符相同(類爲public,構造函數也爲public;類改成protected,構造函數也改成protected)。一旦你定義了本身的構造方法,默認構造方法就會失效。

實例 

class MyClass{
int x;

MyClass(){//構造函數
x=10;
}
}

也能夠像下面這樣調用構造方法來初始化一個對象:  

public class ConsDemo{
public static void main(String[]args){
MyClass t1=new MyClass();
MyClass t2=new MyClass();
System.out.println(t1.x+" "+t2.x);
}
}

大多時候須要一個有參數的構造方法。  

 實例

 

class MyClass{
int x;
MyClass(int i){//構造函數
x=i;
}
}
public class ConsDemo{
public static void main(String args[]){
MyClass t1=new MyClass(10);
MyClass t2=new MyClass(20);
System.out.println(t1.x+" "+t2.x);
}
}

可變參數  

JDK1.5開始,Java支持傳遞同類型的可變參數給一個方法。

實例


 

finalize()方法

Java容許定義這樣的方法,它在對象被垃圾收集器(回收)以前調用,這個方法叫作finalize(),它用來清除回收對象。例如,你可使用finalize()來確保一個對象打開的文件被關閉了。

在finalize()方法裏,你必須指定在對象銷燬時候要執行的操做。

finalize()通常格式是:

protected void finalize(){
//終結代碼
}

protected限定符不可被繼承,確保finalize()方法不會被該類之外的代碼調用;void返回語句。

固然,Java的內存回收能夠由JVM來自動完成。若是你手動使用,則可使用上面的方法。  

相關文章
相關標籤/搜索