static关键字:
package com.lbj.javase07;
/*** "中国人"类* * 什么时候成员变量声明为实例变量呢?* -所有对象都有这个属性,但是这个属性的值会随着对象的变化而变化【不同对象的这个属性具体的值不同】* * 什么时候成员变量声明为静态变量呢?* -所有对象都有这个属性,并且所有对象的这个属性的值是一样的,建议定义为静态变量,节省内存的开销* * 静态变量在类加载的时候初始化,内存在方法区中开辟。访问的时候不需要创建对象,直接使用"类名.静态变量名"的方式访问。* * 关于java中的static关键字:* 1.static英语单词翻译为静态的* 2.static修饰的方法是静态方法* 3.static修饰的变量是静态变量* 4.所有static修饰的元素都称为静态的,都可以使用"类名."的方式访问,当然也可以用"引用."的方式访问【但不建议】* * @author 14811**/
public class Chinese {//身份证号【每一个对象的身份证号不同】//实例变量String id;//姓名【每一个对象的姓名不同】//实例变量String name;//国籍【每一个对象由于都是由"chinese类"实例化的,所以每一个中国人的国籍都是"中国"】//无论通过Chinese类实例化多少个java对象,这些java对象的国籍都是"中国"//实例变量【实例变量是一个java对象就有一份,100个java对选哪个,就有100个country】,分析这种设计方式有什么缺点?//实例变量存储java对象内部,在堆内存中,在构造方法执行的时候初始化//String country;//所以需要统一一个模板,属于中国人的模板//国籍【所有对象国籍一样,这种特征属于类级别的特征,可以提升为整个模板的特征,可以在变量前添加static关键字修饰】//静态变量,静态变量在类加载的时候初始化,不需要创建对象,内存就开辟了。//静态变量存储在方法区内存中static String country="中国";//构造函数public Chinese(){/** this.id=null;* this.name=null;* this.country=null;*/}public Chinese(String id,String name){this.id=id;this.name=name;}}
创建一个测试类:
package com.lbj.javase07;public class ChineseTest {public static void main(String[] args) {// TODO Auto-generated method stub//创建中国人对象1
// Chinese zhangsan=new Chinese("1","张三","中国");
// System.out.println(zhangsan.id+","+zhangsan.name+","+zhangsan.country);
//
// Chinese lisi=new Chinese("2","李四","中国");
// System.out.println(lisi.id+","+lisi.name+","+lisi.country);
//
// Chinese wangwu=new Chinese("3","王五","中国");
// System.out.println(wangwu.id+","+wangwu.name+","+wangwu.country);Chinese zhangsan=new Chinese("1","张三","中国");System.out.println(zhangsan.id+","+zhangsan.name+","+Chinese.country);Chinese lisi=new Chinese("2","李四","中国");System.out.println(lisi.id+","+lisi.name+","+Chinese.country);Chinese wangwu=new Chinese("3","王五","中国");System.out.println(wangwu.id+","+wangwu.name+","+Chinese.country);System.out.println(Chinese.country);//这样可以调用System.out.println(zhangsan.country);//这样也可以调用zhangsan=null;//所有静态的数据都是可以采用类名. ,也可以采用"引用."的方式访问//采用引用.的方式访问的时候,即使引用是null,也不会出现空指针异常。因为访问静态的数据不需要对象的存在System.out.println(zhangsan.country);}}