一、實例變數定義
定義在類中,方法體之外的變數稱為實例變數。實例變數在對象創建時被創建,每個對象都有自己的一份實例變數的拷貝,對象的操作必須通過對象的方法來完成,因此定義在類內部的實例變數可以被類的方法操作。
public class Person {
String name; // 實例變數
int age; // 實例變數
}在上面的代碼中,name和age都是Person類的實例變數。
二、實例變數訪問
實例變數可以通過”對象名.變數名”的方式進行訪問.
public class TestPerson {
public static void main(String[] args) {
Person p1 = new Person();
p1.name = "張三";
p1.age = 20;
System.out.println("姓名:" + p1.name + ",年齡:" + p1.age);
}
}在上面的代碼中,通過p1.name和p1.age訪問了實例變數。
三、實例變數的默認值
如果實例變數沒有初始化,那麼會自動被賦予一個默認值。
| 數據類型 | 默認值 |
|---|---|
| 整型(byte、short、int、long) | 0 |
| 浮點型(float、double) | 0.0 |
| 布爾型(boolean) | false |
| 字元型(char) | ‘\u0000’ |
| 引用數據類型(類、數組、介面) | null |
public class Person {
String name; // 默認為null
int age; // 默認為0
float score; // 默認為0.0
boolean isMale; // 默認為false
char gender; // 默認為'\u0000'
}四、實例變數與靜態變數的區別
實例變數是每個對象都有自己的一份拷貝,可以通過對象名進行訪問,也可以通過對象的構造方法進行初始化。而靜態變數屬於類,不屬於任何一個對象,不需要創建對象就可以訪問,並且只有一份拷貝,可以通過類名訪問。
public class Person {
String name; // 實例變數
static String school; // 靜態變數
public Person(String name) {
this.name = name;
}
}
public class TestPerson {
public static void main(String[] args) {
Person p1 = new Person("張三");
p1.school = "清華大學";
Person p2 = new Person("李四");
System.out.println("姓名:" + p1.name + ",學校:" + p1.school);
System.out.println("姓名:" + p2.name + ",學校:" + p2.school);
}
}在上面的代碼中,雖然p1和p2屬於不同的對象,但是它們訪問的是同一份靜態變數school,因此輸出的學校都是清華大學。
五、實例變數的封裝
為了保證實例變數的安全性和正常操作,我們需要採用封裝的方式隱藏實例變數。
public class Person {
private String name; // 使用private修飾,限制訪問
private int age; // 使用private修飾,限制訪問
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class TestPerson {
public static void main(String[] args) {
Person p1 = new Person();
p1.setName("張三");
p1.setAge(20);
System.out.println("姓名:" + p1.getName() + ",年齡:" + p1.getAge());
}
}在上面的代碼中,將Person類的name和age變成私有的,通過getName和setName方法進行訪問,將age變數也進行私有化,通過getAge和setAge方法進行訪問。這樣就可以保證實例變數的安全性。
六、小結
實例變數是定義在類中,方法體之外的變數。在對象創建時被創建,每個對象都有自己的一份實例變數的拷貝。實例變數可以通過對象名進行訪問,也可以通過對象的構造方法進行初始化。實例變數如果沒有初始化,會自動被賦予一個默認值。好處是可以被類的方法操作。和靜態變數的區別在於,實例變數是屬於對象的,而靜態變數屬於類,不屬於任何一個對象。為了保證實例變數的安全性,我們需要採用封裝的方式隱藏實例變數。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/231952.html
微信掃一掃
支付寶掃一掃