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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© supoman 中级黑马   /  2015-6-15 17:25  /  1580 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 supoman 于 2015-6-15 17:26 编辑

1、java中类的加载过程,按照加载的顺序正确的是()
1. 默认初始化静态成员变量
2. 执行静态代码块
3.加载非静态的成员
4.加载静态成员到静态区域
5.对静态成员变量进行显式初始化
A、4 , 1,2,5,3
B、4,3,2,1,5,
C、3,4,1,5,2
D、2,4,1,3,5

13 个回复

倒序浏览
我觉的应该是A。
静态的加载顺序真不清楚。
不过3.加载非静态成员,是在静态之后加载的。
排除法我觉的应该是A。
回复 使用道具 举报
我认为选D
回复 使用道具 举报
用排除法可以得出选a
回复 使用道具 举报
还有没有人选啊
回复 使用道具 举报
选A吧,虽然不确定,但是一般非静态都是在静态后面的额
回复 使用道具 举报
a,静态随类加载,非静态实例化时加载,所以非静态最后
回复 使用道具 举报
答案应该是D,因为已加载类,静态代码块就执行了
回复 使用道具 举报
我觉得应该选A
回复 使用道具 举报
肯定是选A啊
回复 使用道具 举报
DAN66 中级黑马 2015-6-15 22:50:00
11#
应该是A
回复 使用道具 举报
选D,首先执行静态代码块
回复 使用道具 举报
本帖最后由 iFmmer 于 2015-6-15 23:02 编辑
  1. //实践是检验真理的唯一标准

  2. class order1 {
  3.         private static String s = "A";
  4.         private String ns = "nA";
  5.         static{
  6. //静态代码块执行前先输出一次静态变量的值,若有值则优先于静态代码块
  7.                 System.out.println("in static s = "+s);
  8.                 s = "B";
  9.                 System.out.println("in static s = "+s);
  10.         }
  11.         {
  12. //执行构造函数前先输出一次非静态成员
  13.                 System.out.println("in order() ns = "+ns);
  14.         }
  15.         order1(){
  16.                 s = "C";
  17.                 ns = "nB";
  18.                 System.out.println("in order() s = "+s);
  19.                 System.out.println("in order() ns = "+ns);
  20.         }
  21.         
  22. }

  23. public class testStatic {

  24.     public static void main(String[] args)
  25.     {
  26.             new order1();
  27.     }
  28. }


复制代码
运行结果:
in static s = A
in static s = B
in order() ns = nA
in order() s = C
in order() ns = nB



结果显示正确答案为A

虽然在我的印象中,似乎静态代码块是最优先执行的,但是我的程序结果如此,我想应该是我代码错了,求指正。
回复 使用道具 举报
A 静态初始化初始化最先执行而且只执行一次 其次才是静态代码块 至于4,能力有限也不理解不过排除法选A是没错的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马