Java实例变量和类变量_Java教程

内容摘要
实例变量和类变量的定义:在声明成员变量时,用关键字static给予修饰的称作类变量,类变量也称为static变量或静态变量,而没有用关键字static给予修饰的称作实例变量。
文章正文

实例变量和类变量的定义:

在声明成员变量时,用关键字static给予修饰的称作类变量,类变量也称为static变量或静态变量,而没有用关键字static给予修饰的称作实例变量。

例如:

class Main {
    float x; //实例变量
    static int y; //类变量
}

注意:关键字static需要放在变量的类型前。

实例变量和类变量的区别:

(1)不同对象的实例变量互不相同:

一个类通过使用new运算符可以创建多个不同的对象,这些对象将被分配不同的成员变量,分配给不同的对象的实例变量占有不同的内存空间,改变其中一个对象的实例变量不会影响其他对象的实例变量。

(2)所有对象共享类变量:

如果类中有类变量,当使用new运算符创建多个不同的对象时,分配给这些对象的这个类变量占有相同的一处内存,改变其中一个对象的这个类变量会影响其他对象的这个类变量,也就是说对象共享类变量。

(3)通过类名直接访问类变量:

当Java程序执行时,类的字节码文件被加载到内存,如果该类没有创建对象,类中的实例变量不会被分配内存。但是,类中的类变量,在该类被加载到内存时,就分配了相应的内存空间。如果该类创建对象,那么不同对象的实例变量互不相同,即分配不同的内存空间,而类变量不再重新分配内存,所有的对象共享类变量,即所有的对象的类变量是相同的一处内存空间,类变量的内存空间直到程序退出运行,才释放所占有的内存。

因此,类变量不仅可以通过某个对象访问,也可以直接通过类名访问,而对象的实例变量可以通过该对象访问,但不能使用类名访问。

 

 

 

代码注释
[!--zhushi--]

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!