您的位置:首页 > 编程语言 > Java开发

在Java中,关于Static关键字的案例分析

2017-10-13 10:46 411 查看
新建一个Value类

public class Value {
static int c = 0;

//无参构造方法
Value() {
c = 15;
}

//有参构造方法
Value(int i) {

c = i;
}

//静态方法
static void inc() {
c++;
}

}

再建一个Count类

public class Count {

static Value v1, v2;//静态变量

static {//此即为static块
prt("v1.c=" + v1.c + "  v2.c=" + v2.c);

v1 = new Value(27);//New了一个Value3的实例

prt("v1.c=" + v1.c + "  v2.c=" + v2.c);

v2 = new Value(15);////再New了一个Value3的实例

prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
}

Value v = new Value(10);////New了一个Value3的实例

public static void prt(String s) {//定义了一个静态方法
System.out.println(s);
}

public static void main(String[] args) {//主方法

Count ct = new Count();

prt("ct.c=" + ct.v.c);

prt("v1.c=" + v1.c + "  v2.c=" + v2.c);

v1.inc();

prt("v1.c=" + v1.c + "  v2.c=" + v2.c);

prt("ct.c=" + ct.v.c);

}

/* v1.c=0  v2.c=0   在new出类实例的时候,会先加载static静态代码块。
v1.c=27  v2.c=27
v1.c=15  v2.c=15
ct.c=10             执行完静态代码块后,才会执行调用的静态方法,所以ct.c=10,由于c为Value3的静态变量属性,类加载的时候
也一起加载完毕,所有实例共享一个静态变量,不会再建新的静态变量。
v1.c=10  v2.c=10    再次调用prt方法,v1.c和v2.c里的c已经不再是27,15,而是10,
v1.c=11  v2.c=11    执行完v1.inc方法后,静态变量值增加,不再新建,所以在10的基础上新增1
ct.c=11*/           // 同理, 实例变量与静态变量不同点在于,一个是类的全局属性,所有的类实例共享一个静态变量,
// 不会随着实例的增加而增加,实例变量是属于实例的属性,每new一个实例就会增加一个相应的实例变量。
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: