package com.hqr;
/** Static关键字
* @author hqr
* 2019.09.26
*
*/
public class Static {
/**
* @"中国"类:
* 1.每一个人都有身份自:id
* 2.每个人都有姓名:name
* 3.每个人都有国籍,且身为中国公民他的国籍一定为"中国";
*
* 小结:
* 因为在“中国”类这一类里,大家身为中国公民,国籍都是一样的,都是“中国”
* 所以没必要一个个录入国籍,可以把 用static修饰“nation”这一变量
* 使它由于对象级别上升到类级,并且“static“修饰的静态变量在同一个类中是共享的
* 写法对比”Static1“
*/
private int id;
private String name;
private String nation;
//构造函数
public Static(){
}
public Static(int id,String name,String nation){
this.id=id;
this. name= name;
this. nation= nation;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Static zhangsan = new Static(1,"张三","中国");
Static lisi = new Static(1,"李四","中国");
System.out.println(zhangsan.id+","+zhangsan.name+","+zhangsan.nation);
System.out.println(lisi.id+","+lisi.name+","+lisi.nation);
}
}
package com.hqr;
/** Static关键字
* @author hqr
* 2019.09.26
*/
public class Static1 {
/**
* 什么时候成员变量声明为实例变量?
* 所有对象都有这个属性,但这个属性的值会随着对象的变化而变化(不同对象的这个属性的值不同)
*
* 什么时候成员变量声明为静态变量?
* 所有对象都存在这个属性,并且所有对象的这个属性的值都是一样的,建议定义为静态变量,节省内存的开销
* 静态变量在类加载的时候初始化,内存在方法区中开辟,访问时候不需要创建对象,直接使用”类名.静态变量名“的方式访问
*
*/
//实例变量
private int id;
//实例变量
private String name;
//静态变量(类名.方法名;访问)
static String nation;
//构造函数
public Static1(){
}
public Static1(int id,String name,String nation){
this.id=id;
this. name= name;
this. nation= nation;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Static1 zhangsan = new Static1(1,"张三","中国");
Static1 lisi = new Static1(1,"李四","中国");
System.out.println(zhangsan.id+","+zhangsan.name+","+Static1.nation);
System.out.println(lisi.id+","+lisi.name+","+Static1.nation);
}
}