JAVA入门级教学之(static关键字)

 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);
	}

}
发布了81 篇原创文章 · 获赞 3 · 访问量 2456

猜你喜欢

转载自blog.csdn.net/LBJ8888888/article/details/104509257
今日推荐