java中静态代码块为什么不可以放在main函数里面!!!

而是要放在main函数上面?
class StaticsDemo
{
static
{
System.out.println("小明");
}
static
{
System.out.println("小王");
}
public static void main(String[] args)
{

    System.out.println("H");
}

一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用
比如main方法就必须是静态的 这是程序入口
两者的区别就是:静态代码块是自动执行的;
静态方法是被调用的时候才执行的.

class StaticsDemo
{
static
{
System.out.println("小明");
}
static
{
System.out.println("小王");
}
public static void main(String[] args)
{

    System.out.println("H");
}

}

Firstly, Program does not contain a static 'Main' method suitable for entry point.
And then An object reference isn't required for the non-static fied, method, or property.

类的加载过程:加载--->验证--->准备--->解析--->初始化;其中main方法所在的类,在JVM启动的时候就会进行初始化。

加载-验证-准备,就不说了,直接说初始化。

初始化会做什么?

初始化阶段就是执行类构造器clinit()的过程(不是init())。

clinit()方法由编译器自动产生,收集类中static{}代码块中类变量赋值语句和类中静态成员变量的赋值语句。

注意了,此时并不执行静态方法!!!

如果静态代码块可以在main方法中,意味着我不执行main方法却要执行方法里面的代码块!是不是很逗?!

主要看区别
静态代码块是自动执行的;
静态main方法是被调用的时候才执行的.

静态代码块都是自动执行的,而且只执行一次,,,main是手动执行的,,每次运行都执行