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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Q932036165 中级黑马   /  2015-12-11 22:51  /  998 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class A {
        //静态块
        static {
                A a = new A();
                i = 10;
        }
       
        public static int i;
        public int j;
       
        public A() {
                System.out.println(A.i);
                System.out.println(j);
        }
       
        public static void main(String[] args) {
                A a = new A();
        }
}

5 个回复

倒序浏览
会打印2次
回复 使用道具 举报
首先,main方法执行前
static {
            A a = new A();
            i = 10;
    }
随着A类的加载而加载
A a = new A();执行,
那么就会执行
public A() {
            System.out.println(A.i);
            System.out.println(j);
    }
而成员变量
public static int i;
    public int j;
系统默认值为0;
所以 打印
0
0
然后
执行i =10;
随后,main方法执行,
A a = new A();
所以又执行一次
public A() {
            System.out.println(A.i);
            System.out.println(j);
    }
这时候打印
1
0
所以结果为
0
0
1
0
回复 使用道具 举报
上边打错了结果是
0
0
10
0
回复 使用道具 举报
sky123 发表于 2015-12-11 23:00
上边打错了结果是
0
0

哦,知道了,谢谢!大神!
回复 使用道具 举报
  1. public class Try {




  2. public static void main(String[] args) {
  3.   // 静态修饰的成员可以直接被类名调用

  4.   System.out.println(Nei.c);
  5. //  创建对象调用
  6.   Nei a1=new Nei(2);
  7.   Nei a2=new Nei(3);
  8. //  匿名调用
  9.   new Nei(4);
  10. }
  11. }

  12. class Nei {
  13. // 类的初始化值,(成员变量)
  14. int a=1;

  15. //  静态修饰成员

  16.   static String c ="静态初始化值";
  17. // 每创建一个对象,就给一个对象进行初始化
  18. {
  19.   System.out.println("构造代码块");
  20. }
  21. // 运行main函数后,只要调用该类,静态代码块只运行一次。
  22. static{
  23.   System.out.println("静态代码块");
  24. }
  25. // 构造函数不用定义返回值类型,不可以写return语句,给对象初始化
  26.      public  Nei(int a){
  27. //      this代表它所在函数所属对象的引用
  28.    this.a=a;
  29. //   局部初始化,(局部变量)
  30.   String d="构造函数";
  31.   System.out.println(d+"....和this应用于a"+a);
  32. }
  33. }

  34. //注意:成员变量和局部变量:
  35. //成员变量作用于整个类中;局部变量作用于函数中,或者语句中。
  36. //在内存中的位置:
  37. //成员变量在堆内存中;局部变量存在栈内存中。
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马