当我们在编写一个类的时候,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或者无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必再每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。
package Static; public class StaticTest { public static void main(String[] args) { Chinese c1=new Chinese(); c1.name="张三"; c1.age=12; Chinese c2=new Chinese(); c2.name="李四"; c2.age=15; c1.nation="CHN"; System.out.println(c2.nation); // CHN } } class Chinese{ String name; int age; static String nation; }
此时,修改c1的static属性nation,c2的nation也会被修改。因此nation是所有子对象的共有的。
实例属性:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。
类变量 | 实例变量 | |
类 | 可直接调用 | 不可以直接调用 |
对象 | 可直接调用 | 可直接调用 |
声明:
class Chinese{ String name; int age; static String nation; public static void show() { System.out.println("我是中国人"); } }
使用:
静态方法 | 非静态方法 | |
类 | √ | × |
对象 | √ | √ |
注意:
原文:https://www.cnblogs.com/codexlx/p/13541005.html