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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Test
  2. {
  3.         static int a=9;
  4.         static
  5.                 {
  6.                         int a=4;
  7.                         int b= 3;
  8.                         System.out.println("静态代码块中的a和b分别为: "+a+"  "+b);  // 4   3
  9.                 }
  10.        
  11.         public static void main(String[] args)
  12.         {
  13.                 int a= 10;
  14.                 {
  15.                         //int a=4;                        //main函数里面定义了a,不能再定义
  16.                         int b= 3;
  17.                         System.out.println("构造代码块中的a和b分别为: "+a+"  "+b);  // 10  3
  18.                 }
  19.                 //System.out.println(a+"  "+v.b);
  20.                 Test v = new Test();
  21.                 //System.out.println(a+"  "+v.b);    //这里怎么找不到静态代码块中的b和a??
  22.                                                                                         //静态代码块中的a和b,不会和主函数的a和b冲突吗??
  23.                 System.out.println(v.a);    //9   ??

  24.                 System.out.println(a);                //10   ??
  25.         }
  26. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

2 个回复

正序浏览
局部变量的作用域只在它所在的代码块里才有效!
回复 使用道具 举报
局部变量的作用域简单的说就是在定义变量时所在的 { } 代码块内,
比如:
  1. {        //代码块A,开始

  2.         int a = 0;

  3.         {        // 代码块B,开始

  4.                 a = 2;    // 这里a有效

  5.                 int b= 0;

  6.         }        // 代码块B,结束

  7.         a = 3;       // 这里a有效
  8.        
  9.         // b = 5;         // 这里b无效

  10. }        // 代码块A,结束

  11. //a = 4;       // 这里a无效
复制代码


变量a:因为a是在“代码块A”中定义的,作用作用域就是定义开始出到“代码块A”结束处(当然其中也包括了“代码块B”);
变量b:因为b是在“代码块B”中定义的,所以出了“代码块B”就无效


评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

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