黑马程序员技术交流社区

标题: 构造函数中 那些不为人知的东西 [打印本页]

作者: Good_Man    时间: 2015-11-27 10:37
标题: 构造函数中 那些不为人知的东西
代码如下:
   
class Person{
      {
          System.out.println("i  am  coming");
       }
       Person(){
           System.out.println("Person  run");
      }
      Person(int  a){
           System.out.println("a="+a);
      }
}

当执行   Person  person=new Person();  时,运行结果是什么?

正确答案,    i am  coming
                     person  runing

解析:
        {
          System.out.println("i  am  coming");
       }
     这一部分 称为 构造代码块,
     作用:给对象 进行初始化,
     所以 说,new 对象时,它会 执行,且 优先于构造函数,

构造代码块与构造函数的区别:

   构造代码块:给所有对象统一初始化,
   构造函数:给对应的对象初始化,
作者: summerhahaha    时间: 2015-11-27 20:50
看不懂看不懂
作者: bbaijiajinger    时间: 2015-11-27 22:13
构造代码块是给类进行初始化
构造函数是给对象进行初始化
所以每次new出一个对象,构造代码块块就加载一次
作者: 袁有福123    时间: 2015-11-27 22:52
为啥答案里面有person  runing这个呢  不懂呢??
作者: Mr.Cai    时间: 2015-11-27 22:59
构造代码开优先于构造方法执行
作者: Little_jie    时间: 2015-11-28 08:26
构造代码块优于构造函数执行
作者: Good_Man    时间: 2015-11-28 08:39
袁有福123 发表于 2015-11-27 22:52
为啥答案里面有person  runing这个呢  不懂呢??

呵呵哒,写错了,  是   Person run
作者: hdhunter    时间: 2015-11-28 10:06
构造代码块这东西挺新鲜。见识了。
作者: wyasln    时间: 2015-11-28 11:05
还好看过,基础得夯实
作者: Phy_zhang    时间: 2015-11-28 11:24
谢谢楼主分享,又复习了一遍,不过楼主说得有点夸张了,不为人知......
作者: xiaolongwang    时间: 2015-11-28 11:35
学习了。。。
作者: eddy1820    时间: 2015-11-28 23:05
又複習了一遍,感謝分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2