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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王震阳老师   /  2014-6-19 15:43  /  32139 人查看  /  571 人回复  /   5 人收藏 转载请遵从CC协议 禁止商业使用本文

阳哥查收哦

OY_L5U)5M1NE(]${U)L_Q[8.jpg (41.9 KB, 下载次数: 11)

OY_L5U)5M1NE(]${U)L_Q[8.jpg

4A~JX7$K_%6YME{{GZ`0R_X.jpg (22.16 KB, 下载次数: 8)

4A~JX7$K_%6YME{{GZ`0R_X.jpg

demo.zip

65.23 KB, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
学习学习
回复 使用道具 举报

这一题的目的是明白一个对象初始化的时候,静态代码块、代码块、构造函数等的执行顺序。
回复 使用道具 举报
嗯嗯,真去拿够技术分
回复 使用道具 举报
已经完成!!!!

Test.zip

49.6 KB, 下载次数: 25

回复 使用道具 举报
  1. void a(){
  2.                 System.out.println("代码块"+" ");
  3.         }
  4.        
复制代码

这叫方法,不叫代码块。代码块是{};执行的顺序因此也是不对的。你一定仔细读懂题意。不然做这些题反而会让你进入误区。
回复 使用道具 举报
我就是这么标准的十五个字的回复
回复 使用道具 举报
看看。。。
回复 使用道具 举报
回帖领题
回复 使用道具 举报
Demo.zip (594 Bytes, 下载次数: 1)
源码注释中带有结果分析。

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
领题!!!
回复 使用道具 举报
邮件已到!!!

StaticDemo.rar

480 Bytes, 阅读权限: 200, 下载次数: 1

回复 使用道具 举报
  1. package test;

  2. public class StaticDemo {

  3.         /**
  4.          * @param args
  5.          */
  6.         static int x=9;
  7.         {
  8.                 System.out.println("C");
  9.         }
  10.         static{
  11.                 System.out.println("B");
  12.         }
  13.         StaticDemo(){
  14.                 System.out.println("A");
  15.         }
  16.        
  17.         public static void main(String[] args) {
  18.                 // TODO Auto-generated method stub
  19.                 new StaticDemo();
  20.                 //测试静态代码块执行的次数
  21.                 new StaticDemo();
  22.                
  23.                 StaticDemo sd=new StaticDemo();

  24.                 System.out.println(StaticDemo.x);
  25.                 //静态成员变量和静态代码块一样在该内被加载时就加载进入方法区的静态区
  26.         }

  27. }
  28. //静态代码块在类加载时就加载进内存中了,所以只运行一次。
  29. //而代码块在对象进入内存中与优先于构造方法执行。
复制代码


你这里没有出现代码块,代码块是单独的{}里面的代码。
回复 使用道具 举报
as604049322 发表于 2014-11-30 15:30
源码注释中带有结果分析。

  1. public class Demo {

  2.     public static void main(String[] args){
  3.           // new Test();
  4.            System.out.println("var="+Test.getvar());
  5.            System.out.println("var="+Test.getvar());
  6.     }
  7.         /*运行结果为:静态代码块!var=0
  8.                                 代码块!var=1
  9.                                 构造函数!var=1
  10.                                 var=1
  11.                                 var=1
  12.         而将new Test();注释后,运行结果为:
  13.         静态代码块!var=0
  14.         var=1
  15.         var=1
  16.         从而证明:初始化对象的时候的执行顺序为静态代码块、代码块、构造函数。
  17.         直接用类名调用该类的静态变量时的执行的顺序为只执行静态代码块或不执行,若内存中不存在Test类则执行一次静态代码块进行初始化,否则不执行。
  18.        
  19.         */
  20. }

  21. class Test {
  22.         private static int var=0;
  23.         Test(){
  24.                 System.out.println("构造函数!var="+var);
  25.         }
  26.         {
  27.                 System.out.println("代码块!var="+var);
  28.         }
  29.         static{
  30.                 System.out.println("静态代码块!var="+var);
  31.                 var++;
  32.         }
  33.         public static int getvar(){
  34.                 return var;
  35.         }
  36. }
复制代码

还可以。
回复 使用道具 举报
拿技术分!!!!!!!!!!!!!!!!!!!!!
回复 使用道具 举报
look                  
回复 使用道具 举报
做老题  得一份 哈哈  来了
回复 使用道具 举报
做老题  得技术分 开始  阳哥

Exam1.rar

37.9 KB, 阅读权限: 200, 下载次数: 1

回复 使用道具 举报
mmppp 发表于 2014-12-5 16:50
做老题  得技术分 开始  阳哥
  1. 结论:在直接初始化对象时,执行顺序为: 静态代码块   构造代码块   构造函数。
  2.       在用类名调用静态变量时,执行顺序为  :  构造代码块  构造函数   静态代码块  静态变量
复制代码

第一条规律是正确的,第二条规律是不正确的。希望你能再好好琢磨一下。
回复 使用道具 举报
sorry  阳哥  刚才脑子短路了 哈哈 类名调用静态变量我还初始化一下对象。。。。

Exam1.rar

5.28 KB, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马