static静态变量是整个类共有的变量,不是某个对象所有,被类的所有对象共享。
例:
public class Demo {
static String hobby="imooc";//创建静态变量
public static void main(String[] args) {
System.out.println("通过类名访问hobby"+Demo.hobby);
Demo hello=new Demo();
System.out.println("通过对象名访问hobby"+hello.hobby);
hello.hobby="A";//使用对象名的形式修改hobby
}
}
用static修饰方法,成为静态方法,如上面例子中
public static void main(String[] args) {}
- 静态方法中可以直接调用同类中静态成员,但不能直接调用非静态成员。若想调用非静态成员,则可以创建对象,通过对象来访问非静态成员
- 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
- 静态方法不能调用非静态方法,需要通过对象来访问非静态方法
初始化块定义:
在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用static修饰初始化块,就称为静态初始化块
静态初始化块:
静态初始化块只在类加载时执行,且只执行依次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量
程序执行顺序是:静态初始化块,初始化块,构造方法
初始化块:
{
num1=5;
System.out.println("通过初始化块为num1赋值");
}
静态初始化块:
static {
num2=6;
System.out.println("通过静态初始化块为num2赋值");
}
构造方法
public HelloWorld() {
num3=7;
System.out.println("通过构造方法为num3赋值");
}