今天来回顾下static关键字,对于一些概念的理解不够深刻的就应该静下心来,好好去理解,再进行开
发,而不应该急于求成,“开发完没bug就行”这绝对是一种很危险的行为。
本节的大纲:1.静态变量 2.静态方法 3.静态代码块
1.静态变量
(1)有static修饰的变量(静态变量、类变量)
对于静态变量在内存中只有一个拷贝(节省内存),JVM只为其分配一次内存,在加载类的过程中完
成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问
(2)不加static修饰的变量(实例变量)
必须先创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响
(灵活)。
2.静态方法
静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关
键字,不能直接访问所属类的实例变量和实例方法(也即是非静态变量和方法),只能访问所属类的静
态成员变量和成员方法。因为实例成员与特定的对象关联!
3.静态代码块
静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的
方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类
中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
(1)什么时候执行?
简单来说,就是在这个类第一次被调用或者实例化的时候执行的。这里有位前辈写的很好
(http://www.cnblogs.com/ivanfu/archive/2012/02/12/2347817.html)。
(2)类中的代码块的执行顺序是怎样的?
执行顺序:静态代码块>mian方法>构造代码块>构造方法。
(3)静态代码块的作用是什么?(为什么要用它)
静态代码只会执行一次,再次new对象的时候也不会执行,而且是自动执行的。多用于一些读取文件或
者读取配置的场景。
今天就了解到这,有空的时候补上代码~要去跑步了,10km~