1. 程式人生 > >Java基礎鞏固(三)-方法

Java基礎鞏固(三)-方法

方法

方法的定義

修飾符 返回值型別 方法名(引數型別 引數名){
    ...
    方法體
    ...
    return 返回值;
}

過載

  • 方法名相同
  • 引數型別或個數不同
  • 返回值相同也可不同

引數

  • 基本資料型別做完引數(值型別)
    方法內部對引數的修改不影響呼叫者
  • 引用資料做完引數
    方法內部修改了堆,結果會被保留下來

注:具體在Java基礎鞏固(一)中有做個分析 一個是堆的操作 一個是棧的操作

可變引數

JDK 1.5 開始,Java支援傳遞同類型的可變引數給一個方法。
方法的可變引數的宣告如下所示:

typeName... parameterName

在方法宣告中,在指定引數型別後加一個省略號(…) 。
一個方法中只能指定一個可變引數,它必須是方法的最後一個引數。任何普通的引數必須在它之前宣告。

public class VarargsDemo {
    public static void main(String args[]) {
        // 呼叫可變引數的方法
        printMax(34, 3, 3, 2, 56.5);
        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("The max value is " + result); } }

console

The max value is 56.5
The max value is 3.0

finalize() 方法

Java 允許定義這樣的方法,它在物件被垃圾收集器析構(回收)之前呼叫,這個方法叫做 finalize( ),它用來清除回收物件。
例如,你可以使用 finalize() 來確保一個物件開啟的檔案被關閉了。
在 finalize() 方法裡,你必須指定在物件銷燬時候要執行的操作。
finalize() 一般格式是:

protected void finalize()
{
   // 在這裡終結程式碼
}

注:Java 的記憶體回收可以由 JVM 來自動完成。如果你手動使用,則可以使用上面的方法。

public class FinalizationDemo {  
  public static void main(String[] args) {  
    Cake c1 = new Cake(1);  
    Cake c2 = new Cake(2);  
    Cake c3 = new Cake(3);  
      
    c2 = c3 = null;  
    System.gc(); //呼叫Java垃圾收集器
  }  
}  
 
class Cake extends Object {  
  private int id;  
  public Cake(int id) {  
    this.id = id;  
    System.out.println("Cake Object " + id + "is created");  
  }  
    
  protected void finalize() throws java.lang.Throwable {  
    super.finalize();  
    System.out.println("Cake Object " + id + "is disposed");  
  }  
}

console

$ javac FinalizationDemo.java 
$ java FinalizationDemo
Cake Object 1is created
Cake Object 2is created
Cake Object 3is created
Cake Object 3is disposed
Cake Object 2is disposed

注:可以看到 這裡gc 已經將兩個為null的物件回收了
ps:趕緊鞏固完,去看看jvm。越研究越有意思