您的位置:

Java实例变量简介

一、实例变量定义

定义在类中,方法体之外的变量称为实例变量。实例变量在对象创建时被创建,每个对象都有自己的一份实例变量的拷贝,对象的操作必须通过对象的方法来完成,因此定义在类内部的实例变量可以被类的方法操作。

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方法进行访问。这样就可以保证实例变量的安全性。

六、小结

实例变量是定义在类中,方法体之外的变量。在对象创建时被创建,每个对象都有自己的一份实例变量的拷贝。实例变量可以通过对象名进行访问,也可以通过对象的构造方法进行初始化。实例变量如果没有初始化,会自动被赋予一个默认值。好处是可以被类的方法操作。和静态变量的区别在于,实例变量是属于对象的,而静态变量属于类,不属于任何一个对象。为了保证实例变量的安全性,我们需要采用封装的方式隐藏实例变量。