实例变量和类变量的定义
在声明成员变量时,用关键字static给予修饰的称作类变量,类变量也称为static变量或静态变量,而没有用关键字static给予修饰的称作实例变量。
例如:
classMain{floatx;//实例变量staticinty;//类变量}
注意:
关键字static需要放在变量的类型前。
实例变量和类变量的区别
1. 不同对象的实例变量互不相同:
一个类通过使用new运算符可以创建多个不同的对象,这些对象将被分配不同的成员变量,分配给不同的对象的实例变量占有不同的内存空间,改变其中一个对象的实例变量不会影响其他对象的实例变量。
2. 所有对象共享类变量:
如果类中有类变量,当使用new运算符创建多个不同的对象时,分配给这些对象的这个类变量占有相同的一处内存,改变其中一个对象的这个类变量会影响其他对象的这个类变量,也就是说对象共享类变量。
3. 通过类名直接访问类变量:
当Java程序执行时,类的字节码文件被加载到内存,如果该类没有创建对象,类中的实例变量不会被分配内存。但是,类中的类变量,在该类被加载到内存时,就分配了相应的内存空间。如果该类创建对象,那么不同对象的实例变量互不相同,即分配不同的内存空间,而类变量不再重新分配内存,所有的对象共享类变量,即所有的对象的类变量是相同的一处内存空间,类变量的内存空间直到程序退出运行,才释放所占有的内存。
因此,类变量不仅可以通过某个对象访问,也可以直接通过类名访问,而对象的实例变量可以通过该对象访问,但不能使用类名访问。