Dotcpp  >  编程教程  >  Java类和对象  >  Java实例变量和类变量

Java实例变量和类变量

点击打开在线编译器,边学边练

实例变量和类变量的定义

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


例如:

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


注意:

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


实例变量和类变量的区别

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

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


2. 所有对象共享类变量:

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


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

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

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



本文固定URL:https://www.dotcpp.com/course/749

Java教程
第一章 Java入门
第二章 Java运算符和表达式
第三章 Java流程控制
第四章 Java类和对象
第五章 Java子类与继承
第六章 Java接口与实现
第七章 Java内部类与异常类
第八章 Java常用实用类
第九章 Java输入输出流
第十章 Java数组
Dotcpp在线编译      (登录可减少运行等待时间)