一.static的作用
-
概述:在前面的博文提到,类其实就是一个摸具,当创建对象时,便会拥有类的全部属性与方法,并且与其他对象的属性是无关联的,但当某一个属性前加上static后,则会变成所有对象共同拥有当前这个属性,如若有对象修改这个属性,那其他对象,调用时,也会变成修改后的内容
-
举例:爸爸有100块钱,儿子也可以使用这笔巨额,但当爸爸消费后,还剩5元时,儿子所能支配的也仅有这剩下的钱。
/**
* @ Author: Zhangyu
* @ Date: 2020/7/22
* @ Description:
*/
public class Test {
int num1=10;//普通属性
static int num2=10;//静态属性
public static void main(String[] args) {
Test test=new Test();
test.num1-=1;//对象将普通属性减一
test.num2-=1;//对象将静态属性减一
System.out.println("当前对象test中的属性num1:"+test.num1+" num2:"+test.num2);
Test test1=new Test();//在创建一个属性来看看在test中改变的num2,会不会影响test1的num2
System.out.println("当前对象test1中的属性num1:"+test1.num1+" num2:"+test1.num2);
}
}
//输出结果
当前对象test中的属性num1:9 num2:9
当前对象test1中的属性num1:10 num2:9
- 从上面示例代码看出,test中改变的num2,在test1中调用,显示的是test中改变后的值,而num1却重新赋值,这就是static的作用,一般用于计数,投票,等场景
二.static的第二个作用
- static还有一个作用,就是静态代码块,凡是使用类的属性,方法,或创建对象,都会执行静态代码块,但静态代码块一旦执行过一次,便不会在次执行
- 代码演示
/**
* @ Author: Zhangyu
* @ Date: 2020/7/22
* @ Description:
*/
public class Test {
static{//静态代码块
System.out.println("静态代码块已执行!!!");
}
public static void main(String[] args) {
Test test=new Test();//创建第一个对象
Test test1=new Test();//创建第二个对象
}
}
- 输出结果
静态代码块已执行!!!
- 结论
静态方法可以通过任何调用方法属性,方法以及创建对象的方式,执行静态代码块,且只执行一次,有兴趣的小伙伴可以去试试调用方法属性或 方法的方式