Java基礎鞏固(三)-方法
阿新 • • 發佈:2018-12-07
方法
方法的定義
修飾符 返回值型別 方法名(引數型別 引數名){
...
方法體
...
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。越研究越有意思