目录
1.static关键字
1.1、static关键字含义
- 类变量:使用
static
关键字声明的变量称为类变量或静态变量。这些变量属于类本身,而不是类的任何特定实例。因此,无论创建多少个类的实例,静态变量都只有一个副本。public class MyClass { public static int count = 0; // 类变量 }
- 类方法:使用
static
关键字声明的方法称为类方法或静态方法。这些方法可以在不创建类的实例的情况下被调用,并且它们只能访问类的静态变量和调用静态方法。public class MyClass { public static void printMessage() { System.out.println("Hello, World!"); } }
- 静态初始化块:
static
关键字可以用于定义一个静态初始化块,它是在类加载时执行的代码块,用于初始化静态变量。静态初始化块只在类第一次被加载时执行一次。public class MyClass { static { // 初始化代码 } }
1.2、static关键字应用
问题:
1.Static关键字是什么?
答:static修饰代码属于类
2.为什么设计sataic关键字?
答: 要用方法和类去使用自己的方法和变量
了解之后我们看个例子:
例一:
1.思考这段代码的运行流程,以及结果。
public class Demo {
public Demo(String aa){
System.out.println("00"+aa);
}
static {
System.out.println("1");
}
public static Demo demo = new Demo("***");
static {
System.out.println("2");
}
}
class Test2{
public static void main(String[] args) {
Demo demo = new Demo("----");
}
static {
System.out.println("3");
}
}
2.首先我展示运行结果:
3.再来描述一下过程
1.扫码————》加载(编译)————》运行
*2.main方法在哪里我们就先去扫描那个类——》首先去扫描Test类,发现没有父类,有static修饰的代码,输出3,编译Test类,并且将main方法入栈
3..执行new Demo("----");在执行之前扫描Demo类,发现没有父类,所以编译Demo类,在编译的过程中static代码块按顺序优先执行
4..输出1
5..执行 public static Demo demo = new Demo("***");此时会涉及到调用Demo构造方法,所以输出 00***
6..输出 2
7..编译完毕,回到main方法当中维续执行new Demo("----");现在可以创建对象了也就是进行到了运行阶段
8..通过调佣构造器创建对象:00----