当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上 的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象, 其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少 对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个 国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中 都单独分配一个用于代表国家名称的变量。
属性:
属性是否使用static修饰 又分为静态属性和非静态属性(实例变量) 实例变量: 我们创建了类的多个对象,每个对象都独立拥有一套类 不会导致其他对象中相同的属性值的修改 静态变量: 我们创建了类的多个对象, 多个对象共享一个静态变 获取到的是修改后的值
一个类的属性被static修饰之后 无论实例化多少个 对象那么 其中的一个对这个属性进行了操作 其他的对象获取的是这个被操作后的静态属性
public cl ass StaticTest { public static void main(String[] args) { Chinese chineseOne = new Chinese(); chineseOne.name = "隔壁老王"; chineseOne.age = 32; Chinese chineseTwo = new Chinese(); chineseTwo.name = "隔壁未婚姐姐"; chineseTwo.age = 26; System.out.println(chineseTwo.nation); // null 现在未进行设置值 } } class Chinese { String name; int age; static String nation; }
如果类的一个属性加上了static就是静态属性 那么无论实例化多少对象都公用这一个属性 ,其中一个改变其他对象调用也随着改变
如上
Chinese chineseOne = new Chinese(); chineseOne.name = "隔壁老王"; chineseOne.age = 32; chineseOne.nation = "CNN"; Chinese chineseTwo = new Chinese(); chineseTwo.name = "隔壁未婚姐姐"; chineseTwo.age = 26; System.out.println(chineseTwo.nation); // CNN 因为是static 的静态属性大家公用一个
.