static关键字
2020-08-07 本文已影响0人
Epimenides
static修饰变量相关概念
- static翻译为"静态"
- 所有static关键字修饰的都是类相关的,类级别的。
- 所有static修饰的,都是采用"类名."的方式访问。
- static修饰的变量:静态变量
- static修饰的方法:静态方法
变量的分类:
- 变量根据声名的位置进行划分:
- 在方法体当中声明的变量叫做:局部变量。
- 在方法体外声明的变量叫做 :成员变量。
- 成员变量又可以分为:
- 实例变量
- 静态变量
static静态代码块相关:
- 什么是静态代码块,语法是什么?
static{
java语句;
java语句;
}
-
static静态代码块在什么时候执行呢?
- 类加载时执行。并且只执行一次。
- 静态代码块有这样的特点/特征。
-
注意:静态代码在类加载时执行,并且在main方法执行之前执行。
-
静态代码块一般是按照自上而下的顺序执行。
-
静态代码块有什么作用?
-
静态代码块不常用 (不是每一个类中都要写的东西)。
-
静态代码块这种语法机制实际上是
SUN
公司给我们java程序员的一个特殊的时刻/时机。这个时机叫做类加载的时机
具体的业务:
项目经理说了:所有我们编写的程序中,只要是类加载了,请记录一下类加载的日志信息(在哪年哪月那日几时积分几秒,哪个类加载到JVM当中了)。
-
静态代码块的执行顺序
-
栈:方法只要执行, 就会压栈。(局部变量)
-
堆:new出来的对象都在堆中。垃圾回收起主要针对。(实例变量)
-
方法区:类的信息,字节码的信息,代码片段。
方法的代码片段放在方法区,但是方法执行过程中需要的内存在栈中。
public class StaticTest{
// 静态变量在什么时候初始化?类加载时初始化
// 静态变量存储在哪里?方法区
static int i = 100;
// 静态代码块什么时候执行?类加载的时候执行。
// 只要是静态的就可以放在方法区中
static {
// 这里可以访问i吗?
System.out.println("i = " + i);
}
// 入口(main方法执行前实际上执行了很多代码)
public static void main(String[] args){
System.out.println("main begin!");
}
}