黑马程序员技术交流社区

标题: 变量的作用域的问题,请详细回答,越详细越好 [打印本页]

作者: 2528870651    时间: 2014-3-29 00:07
标题: 变量的作用域的问题,请详细回答,越详细越好
  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. }
复制代码

作者: xietansheng    时间: 2014-3-29 01:07
局部变量的作用域简单的说就是在定义变量时所在的 { } 代码块内,
比如:
  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”就无效



作者: 北极雪871208    时间: 2014-3-29 07:08
局部变量的作用域只在它所在的代码块里才有效!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2