11 Java面向对象之static及块
11 Java面向对象之static及块
① static变量与static方法
- static在java中表示全局或者静态的意思。Java中其实并不存在全局变量的概念,但是可以通过static来实现一个伪全局的概念。
- 用static来修饰属性或者方法,则此属性或者方法就属于类级别的。
- 对象级别:成员变量、成员方法属于对象级别的内容。
- 类级别:静态的内容都属于类级别的内容。
- 在类加载的时候,类的静态变量就已经在内存里边创建了空间,静态变量默认是方法区。
- 通过类创建对象的时候,每个对象都可以共享静态变量。
static方法与static变量是一样的概念,属于类的方法。
② 成员变量和静态变量区别
- 静态变量
随着类加载就初始化,在内存中有且仅有一个,JVM只会给当前类的静态变量分配一次内存,同时类的静态变量是所有对象共享的,并且还可以通过“类名.静态变量”来访问。 - 实例变量(成员变量)
伴随着对象的产生而创建,每个对象都有对应的实例变量。所有的实例变量都是和对象同生共死的。
③ 调用规范
- 静态方法可以直接调用本类中的静态成员。
- 静态方法不能调用非静态成员变量(成员变量此时还没有创建)。
- 静态方法可以调用静态方法,但是不能调用成员方法。
- 成员方法可以调用静态变量,也可以调用普通变量。
- 成员方法可以调用成员方法,可以调用静态方法。
④ 块
- 普通块
在类下边用 { } 来书写的代码就称为普通块。
作用:每次对象在产生的时候都会执行,可以使用其来做对象数据的初始化。但是每次创建对象都要执行,效率比较低。 - 静态块
在普通块前面加上一个static表示静态块。类加载的时候就在内存创建空间,并且有且仅有一个,不管创建多少个对象都是共享这个块。 - 执行顺序
静态块 ----- 普通块 ----- 构造器
Association between wise men is as pure as water.
posted on 2019-03-10 21:01 PenjayFeng 阅读(179) 评论(0) 收藏 举报