Java支持三種不同生存期的變量:
在創(chuàng)建實(shí)例時創(chuàng)建類的成員變量,并且當(dāng)對象被銷毀時被銷毀。未顯式分配值的所有成員變量在聲明期間自動分配一個初始值。成員變量的初始化值取決于成員變量的類型。
下表列出了成員變量的初始化值:
元素類型 | 初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | "\u0000" |
boolean | false |
對象引用 | null |
在以下示例中,變量x在聲明變量時設(shè)置為20。
public class Main{ int x = 20; }
如果您不設(shè)置它們,以下示例顯示默認(rèn)值。
class MyClass { int i; boolean b; float f; double d; String s; public MyClass() { System.out.println("i=" + i); System.out.println("b=" + b); System.out.println("f=" + f); System.out.println("d=" + d); System.out.println("s=" + s); } } public class Main { public static void main(String[] argv) { new MyClass(); } }
輸出:
方法的自動變量在入口時創(chuàng)建方法,并且僅在該方法的執(zhí)行期間存在。只有在執(zhí)行該方法時才能訪問自動變量。(此規(guī)則的一個例外是內(nèi)部類)。
自動變量(方法局部變量)不由系統(tǒng)初始化。自動變量必須在使用前顯式初始化。例如,這個方法不會編譯:
public class Main{ public int wrong() { int i; return i+5; } }
編譯上面的代碼時的輸出:
這里只是一個類變量的一個副本,它存在,而不管該類的實(shí)例數(shù)。 靜態(tài)變量在類加載時初始化; 這里,當(dāng)Main類被加載時,y將被設(shè)置為30。
public class Main{ static int y = 30; }
this
引用當(dāng)前對象。
this
可以在任何方法中使用來引用當(dāng)前對象。
以下代碼顯示如何使用 this 關(guān)鍵字。
// A use of this. Rectangle(double w, double h) { this.width = w; // this is used here this.height = h; }
使用 this
引用隱藏的實(shí)例變量。
成員變量和方法參數(shù)可以具有相同的名稱。在這種情況下,我們可以使用它來引用成員變量。
Rectangle(double width, double height) { this.width = width; this.height = height; }
以下示例顯示如何使用此引用實(shí)例變量。
class Person{ private String name; public Person(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public class Main{ public static void main(String[] args) { Person person = new Person("Java"); System.out.println(person.getName()); person.setName("new name"); System.out.println(person.getName()); } }
上面的代碼生成以下結(jié)果。
更多建議: