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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 坚持不懈   /  2012-10-30 10:44  /  2712 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 坚持不懈 于 2012-11-2 06:38 编辑
  1. class StaticCode //定义一个类
  2. {
  3. int num=9; //成员变量
  4. StaticCode() //构造函数给对象初始化
  5. {
  6. System.out.println("b");
  7. }
  8. static //类代码快
  9. {
  10. System.out.println("a");
  11. }
  12. { //构造代码快 给所有对象进行初始化
  13. System.out.println("c"+this.num);
  14. }
  15. StaticCode(int x) //构造函数给对象初始化
  16. {
  17. System.out.println("d");
  18. }
  19. public static void show() //静态方法
  20. {
  21. System.out.println("show run");
  22. }
  23. }

  24. class StaticCodeDemo
  25. {
  26. static //静态代码快
  27. {
  28. System.out.println("aa");
  29. }
  30. public static void main(String[] args)
  31. {
  32. new StaticCode(4); //建立对象 并切初始化
  33. }
  34. static //静态代码快
  35. {
  36. System.out.println("bb");
  37. }
  38. }

复制代码

我不明白为什么结果不执行aa bb呢?

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

16 个回复

倒序浏览
急急急~~~~~~~~~~~~~~~~~```
回复 使用道具 举报
  1. class StaticCode  //定义一个类
  2. {
  3.         int num=9;  //成员变量
  4.         StaticCode()  //构造函数给对象初始化
  5.         {
  6.                 System.out.println("b");
  7.         }
  8.         static    //类代码快
  9.         {
  10.                 System.out.println("a");
  11.         }
  12.         {          //构造代码快 给所有对象进行初始化
  13.                 System.out.println("c"+this.num);
  14.         }
  15.         StaticCode(int x)  //构造函数给对象初始化
  16.         {
  17.                 System.out.println("d");
  18.         }
  19.         public static void show() //静态方法
  20.         {
  21.                 System.out.println("show run");
  22.         }
  23. }

  24. class StaticCodeDemo
  25. {
  26.         static //静态代码快
  27.         {
  28.                         System.out.println("aa");
  29.         }
  30.         public static void main(String[] args)
  31.         {
  32.                 new StaticCode(4); //建立对象 并切初始化
  33.         }
  34.         static //静态代码快
  35.         {
  36.                         System.out.println("bb");
  37.         }
  38. }

  39. //aa bb  a  c=9  d
复制代码
回复 使用道具 举报
结果能输出 aa bb
回复 使用道具 举报
你的两份代码都一样,都能输出
aa
bb  
a  
c9  
d
回复 使用道具 举报
按理 aa bb 随着类的加载就已经存在了,可我运行结果没有,aa bb 啊,只运行了a  c9 d  为什么啊?
回复 使用道具 举报
回复 使用道具 举报
我执行的为什么有。。
回复 使用道具 举报
{:soso_e104:}
回复 使用道具 举报
围观而已
回复 使用道具 举报
class StaticCode  //定义一个类
{
        int num=9;  //成员变量
        StaticCode()  //构造函数给对象初始化
        {
                System.out.println("b");
        }
        static    //类代码快
        {
                System.out.println("a");
        }
        {          //构造代码快 给所有对象进行初始化
                System.out.println("c"+this.num);
        }
        StaticCode(int x)  //构造函数给对象初始化
        {
                System.out.println("d");
        }
        public static void show() //静态方法
        {
                System.out.println("show run");
        }
}

class StaticCodeDemo
{
        static //静态代码快
        {
                        System.out.println("aa");
        }
        public static void main(String[] args)
        {
                new StaticCode(4); //建立对象 并切初始化
        }
        static //静态代码快
        {
                        System.out.println("bb");
        }
}

//aa bb  a  c=9  d
回复 使用道具 举报
  1. class StaticCode  //定义一个类
  2. {
  3.         int num=9;  //成员变量
  4.         StaticCode()  //构造函数给对象初始化
  5.         {
  6.                 System.out.println("b");
  7.         }
  8.         static    //类代码快
  9.         {
  10.                 System.out.println("a");
  11.         }
  12.         {          //构造代码快 给所有对象进行初始化
  13.                 System.out.println("c"+this.num);
  14.         }
  15.         StaticCode(int x)  //构造函数给对象初始化
  16.         {
  17.                 System.out.println("d");
  18.         }
  19.         public static void show() //静态方法
  20.         {
  21.                 System.out.println("show run");
  22.         }
  23. }

  24. class StaticCodeDemo
  25. {
  26.         static //静态代码快
  27.         {
  28.                         System.out.println("aa");
  29.         }
  30.         public static void main(String[] args)
  31.         {
  32.                 new StaticCode(4); //建立对象 并切初始化
  33.         }
  34.         static //静态代码快
  35.         {
  36.                         System.out.println("bb");
  37.         }
  38. }

  39. //aa bb  a  c=9  d
复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 杨志男 于 2012-10-30 17:14 编辑
  1. 说实话,我用myeclipse和Dos运行的结果,都有aa、bb
  2. <img border="0" alt="" src="http://bbs.itheima.com/forum.php?mod=image&aid=8840&size=300x300&key=fce248fc39d0489bdde1cb9f16eda5bf&nocache=yes&type=fixnone&ramdom=60K1j" aid="attachimg_8840">



  3. 要是不行的话,你可以看看这个,运行一遍结果,就知道构造函数和静态代码块的加载顺序了
  4. class Parent{
  5. static String name = "hello";
  6. {
  7. System.out.println("parent block");
  8. }
  9. static {
  10. System.out.println("parent static block");
  11. }
  12. public Parent(){
  13. System.out.println("parent constructor");
  14. }
  15. }

  16. class Child extends Parent{
  17. static String childName = "hello";
  18. {
  19. System.out.println("child block");
  20. }
  21. static {
  22. System.out.println("child static block");
  23. }
  24. public Child(){
  25. System.out.println("child constructor");
  26. }
  27. }

  28. public class StaticIniBlockOrderTest {

  29. public static void main(String[] args) {
  30. new Child();//语句(*)
  31. }
  32. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 你的回复我只能给你这个了

查看全部评分

回复 使用道具 举报
杨志男 发表于 2012-10-30 17:12

谢谢你,恩,弄明白了~~
回复 使用道具 举报
谢谢大家,解决了~~~十分感谢
回复 使用道具 举报
你上面的代码运行后是可以打印出aa的。
你有可能在修改代码后没有保存或者保存错了地方。
下方修改后的代码打印出的是
a
c9
d

class StaticCode //定义一个类

{

int num=9; //成员变量

StaticCode() //构造函数给对象初始化

{

System.out.println("b");

}

static //类代码快

{

System.out.println("a");

}

{ //构造代码快 给所有对象进行初始化

System.out.println("c"+this.num);

}

StaticCode(int x) //构造函数给对象初始化

{

System.out.println("d");

}

public static void show() //静态方法

{

System.out.println("show run");

}

}


class StaticCodeDemo

{

static //静态代码快

{

//System.out.println("aa");   //将这个静态代码块注释,运行一下,不注释时也运行一下,比较一下。

}

public static void main(String[] args)

{

new StaticCode(4); //建立对象 并切初始化

}

static //静态代码快

{

//System.out.println("bb");   //将这个静态代码块注释,运行一下,不注释时也运行一下,比较一下。

}

}
尝试将主函数中的静态代码块注释后与不注释的代码比较两者的不同,如同代码中静态代码块的注释
回复 使用道具 举报
{:soso_e181:}  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马