黑马程序员技术交流社区

标题: 关于构造代码块的问题 [打印本页]

作者: 无气打火机    时间: 2013-6-21 11:55
标题: 关于构造代码块的问题
这是代码!问什么运行的时候前面那个代码块报错。而后面那个代码块不报错?不是说构造代码块是随着创建对象而加载的么?报错的提示

如果我将上面的 i 加了this 他就可以运行了,但是结果是 0  10  ,为什么结果不同?难道构造代码块还有先后区分的么? 那个变量赋值还比构造代码块早?

QQ图片20130621115153.jpg (22.86 KB, 下载次数: 0)

QQ图片20130621115153.jpg

QQ图片20130621115333.jpg (11.68 KB, 下载次数: 1)

QQ图片20130621115333.jpg

作者: 王靖远    时间: 2013-6-21 12:36
前面那个构造函数应该这样写 Test(){  System.out.println(i);} 你把Test()漏掉了
作者: askyle    时间: 2013-6-21 12:58
大哥 你思路好乱而且代码写好乱 ,格式又不对!
作者: askyle    时间: 2013-6-21 13:01
class Demo
{
        public static void main(String[] args)
        {
                Test t = new Test();
        }
}
class Test
{
        private int i =10;//私有类
       
        {
                System.out.println(i);
        }
        {
                System.out.println(i);
        }
}  
//这才是正确格式写法!
作者: 陈鹏    时间: 2013-6-21 13:19
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Test t=new Test();
  6.         }
  7. }
  8. class Test
  9. {
  10.         [color=Red]Test()[/color]
  11.         {
  12.                 System.out.println(i);
  13.         }
  14.         int i=10;
  15.         {
  16.                 System.out.println(i);
  17.         }
  18. }
复制代码

作者: 陈鹏    时间: 2013-6-21 13:21
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Test t=new Test();
  6.         }
  7. }
  8. class Test
  9. {
  10.         Test()//这个地方
  11.         {
  12.                 System.out.println(i);
  13.         }
  14.         int i=10;
  15.         {
  16.                 System.out.println(i);
  17.         }
  18. }
复制代码

作者: msileandroid    时间: 2013-6-21 13:52
实例变量(非静态变量)
    1. 不能向前引用,如果向前引用,则称为非法向前引用,这是不允许的
    2. 变量属于类的实例对象
    3. 随着类的实例被创建而分配内存空间

作者: msileandroid    时间: 2013-6-21 13:58
代码块,静态代码块,构造函数在对象构造时的执行顺序是:

1)静态代码块(如果构造的对象时该类的第一个对象)

2)代码块(不同的代码块之间按照在类中出现的先后顺序执行

3)构造函数(如果构造函数调用了该类的其它构造函数,则先执行调用的那个构造函数)




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