A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ztw 中级黑马   /  2014-7-27 14:48  /  906 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ztw 于 2014-7-28 22:12 编辑

class Demo{
        public Demo(){
                System.out.println("d");
        }
        static{
                System.out.println("a");
        }
        {
                System.out.println("b");
        }
        private static String name = "hah";
        public static void show(){
                System.out.println(name);
        }
}
class Test(){
        public static void main(String[] args){
                Demo.show();
        }
}
我想问问以上代码,打印出来的结果顺序是什么,原因是什么?求大神回复。

5 个回复

倒序浏览
  1. class Demo{
  2.         public Demo(){
  3.                 System.out.println("d");
  4.         }
  5.         static{
  6.                 System.out.println("a");
  7.         }
  8.         {
  9.                 System.out.println("b");
  10.         }
  11.         private static String name = "hah";
  12.         public static void show(){
  13.                 System.out.println(name);
  14.         }
  15. }
  16. class Test{
  17.         public static void main(String[] args){
  18.                 Demo.show();
  19.         }
  20. }
复制代码
结果:
a
hah
回复 使用道具 举报
static修饰的内容随着类的加载而加载,
回复 使用道具 举报
结果是
a
hah
首先说几个问题,一、主函数编写的时候,没有()。二、和类同名的是构造函数,前面一般不加public。
static所表示的函数是静态代码块儿,随着类的加载二加载,只运行一次,是给类进行初始化的,所以主函数一运行,类就加载了,所以静态代码块就先加载运行了。此处就有   a  
然后运行的构造带买块,之后就是构造函数,但这两个是给对象进行初始化的,你主函数中并没有建立对象,只是直接类名调用功能,所以上述两个函数就没有执行,直接进行类中功能调用。此处就有  hah
回复 使用道具 举报 1 0
调用方便,可用class.调用
回复 使用道具 举报
打印结果是:
a
hah
因为 静态代码块是用来初始化类的,类一加载它就会运行,所以先输出a;然后你调用了静态的方法show(),所以会打印hah
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马