一、实例变量定义
定义在类中,方法体之外的变量称为实例变量。实例变量在对象创建时被创建,每个对象都有自己的一份实例变量的拷贝,对象的操作必须通过对象的方法来完成,因此定义在类内部的实例变量可以被类的方法操作。
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方法进行访问。这样就可以保证实例变量的安全性。
六、小结
实例变量是定义在类中,方法体之外的变量。在对象创建时被创建,每个对象都有自己的一份实例变量的拷贝。实例变量可以通过对象名进行访问,也可以通过对象的构造方法进行初始化。实例变量如果没有初始化,会自动被赋予一个默认值。好处是可以被类的方法操作。和静态变量的区别在于,实例变量是属于对象的,而静态变量属于类,不属于任何一个对象。为了保证实例变量的安全性,我们需要采用封装的方式隐藏实例变量。