class AA
{
    public static void main(String args)
        {System.out.println("123");}
    /*static
    {System.out.println("456");}*/
     
    public static void main(String[] args)
     {System.out.println("hello");
}
静态方法和静态代码块有什么不同,上面的程序为什么不输出123(因为main是一个程序的入口函数,在它里面没有调用静态的main方法,所以不输出123,我知道这个,那为什么静态代码块为什么就输出456了?)  

解决方案 »

  1.   

    你的这个MAIN方法错了,参数应该是一个数组
      

  2.   

    楼上说对了一半
    静态代码块不是构造类对象的时候执行,而是被load了就会执行
      

  3.   

    sp ls, 静态初始化块 就是在类被load到jvm 时就执行 记得以前有一个题目就是 不要写main 但是打印出东西
    就是借助这个实现的。
      

  4.   

    对于生存周期来说,内存分为全局区,堆区和栈区
    对于程序执行来说,内存分为数据区和代码区,数据区说白了就是变量保存的区域,代码区就是函数代码保存的区域,类被加载时或者实例化时就要初始化成员,所以数据区的代码被执行,代码区是调用函数时才会访问到的,所以static方法在不调用的时候是不会被执行的,但是static代码块因为被划分在数据区,所以会被执行的。