任何對象變量的值都是對一個對象的引用。
顯示參數和隱式參數。
class Employee
{
. . .
private final String name;
}
private final Date hiredate;
final應用于基本數據類型,表示值不可變,應用于類對象,表示對象的引用不可變。
一個引用不能改變作為參數的基本類型數據,但能改變對象,因為傳入的參數是對象的引用,不能改變對象引用。
main()是一個程序執行的入口,系統必須先進入這個入口,也就是先要調用main()函數,才能繼續程序的執行,如果main()不用static修飾,系統就沒法進行調用,因為一開始系統不能創建任何對象。而加上了static后,系統就可以直接調用main()函數了,從而繼續程序的執行。
public static void swap(Employee x, Employee y) // doesn't work
{
Employee temp = x;
x = y;
y = temp;
}
Employee a = new Employee("Alice", . . .);
Employee b = new Employee("Bob", . . .);
swap(a, b);
a,b的引用沒有改變。
一個方法不能改變一個基本類型的參數
一個方法可以改變一個對象參數的狀態
一個方法不能讓對象參數引用一個新對象
默認值:數值為0,對象為null,布爾型為false
public Employee(String name, double salary)
{
this.name = name;
this.salary = salary;
}
This指示隱式參數,即被構造的類對象。
public Employee(double s)
{
// calls Employee(String, double)
this("Employee #" + nextId, s);
nextId++;
}
This將調用同一個類的另一個構造函數。
初始化塊
// static initialization block
static
{
Random generator = new Random();
nextId = generator.nextInt(10000);
}
可以為任何一個類添加finalize方法,finalize方法將在垃圾回收器清除對象之前被調用。因為某些對象使用了內存之外的其他資源,如文件。