- System.out,out 是 System 類内定義的靜态 final PrinterStream 變量;
public final class System { ... public final static PrinterStream out = null; ... }
0. 總論
- 注意區分 Java 的按值傳遞和按引用傳遞,但使用按引用傳遞時,被調端不會對(沒有能力)對調用端造成任何影響,
- 按引用傳遞便具備對調用端造成影響的能力,如果在按引用傳遞的情況下,還想保證不會對調用端産生任何影響,此時便可以使用 final 關鍵字(C/C++ 則是 const 關鍵字)修飾參數;
1. 按值傳遞
當傳遞的是一個對象時:
class Test{
private int i = ;
public Test(int i) {
this.i = i;
}
// setI, getI
}
public class PassByValue {
private static void update(Test t) {
t = new Test(); // t.setI(20); 注意二者的差別
System.out.println(t.getI());
}
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.getI()); // 10
update(t); // 20
System.out.println(t.getI()); // 10 仍然是 10
}
}
當然也可以直接輸出對象:
public class PassByValue {
private static void update(Test t) {
t = new Test();
System.out.println(t);
}
public static void main(String[] args) {
Test t = new Test();
System.out.println(t); // [email protected]
update(t); // [email protected]
System.out.println(t); // [email protected]
}
}