READIgg
滑稽阿狸
采纳率75%
2016-03-02 14:35

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

已采纳

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

    System.out.println("H");
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • u012263331 myleo_lost-a-horse 5年前

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

    点赞 1 评论 复制链接分享
  • J080624 流烟默 3年前

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

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

    初始化会做什么?

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

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

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

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

    点赞 评论 复制链接分享
  • Royal_lr Royal_lr 5年前

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

    点赞 评论 复制链接分享
  • enpterexpress 把分全给哥 5年前

    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.

    点赞 评论 复制链接分享
  • yzsunlight yzsunlight 5年前

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

    点赞 1 评论 复制链接分享
  • READIgg 滑稽阿狸 5年前

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

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

    }

    点赞 评论 复制链接分享