Java基础入门变量作用域

阿超 发表于 2009-08-14 21:16 | 来源:Java豆 | 阅读 218 次

      变量作用域是指程序中变量的名字可以被引用的部分。这样说可能比较抽象,变量的作用域通俗上可以理解为一个变量在声明后,程序中哪部分可以访问声明的变量。我们都知道,在变量声明之前我们是不能使用该变量的。

我们首先给出变量可以声明的地方。在Java中,我们可以在如下位置声明变量:

  1. 在类体中作为类属性(变量)。在这里定义的变量被称为类级(class-level)变量
  2. 作为方法或构造方法的参数
  3. 在方法体或构造方法的方法体中
  4. 在语句块中,比如在while循环或for循环中定义

变量作用域被称变量的可访问性。在Java中有多种规则,我们下面一一讲解:

规则一、在语句块中定义的变量只能在块中被访问。这种变量的作用域是声明它的块内。我们给出一个例子作为讲解的依据:

public class MainClass {
     public static void main(String[] args) {
          for (int x = 0; x < 5; x++) {
               System.out.println(x);
        }
   }
}

在for语句中定义的变量为x,这个变量可以被看做是for语句块中定义的变量。因此x的可访问范围只是for语句的块的内部。如果在for语句块之后如果有一个语句,则后面的语句是不能引用变量x的。

规则二、内部块中定义的变量可以访问外部块中定义的变量。这里我们给出一个例子来讲解外部块和内部块:

public class MainClass {

public static void main(String[] args) {
for (int x = 0; x < 5; x++) {
for (int y = 0; y < 3; y++) {
System.out.println(x);
System.out.println(y);
}
}
}
}

例子中给出了两个for语句,外层的for循环语句块、内部的for语句块。根据规则二,我们能够知道声明在外部块内部的语句块可以访问外部for语句块定义的变量x。例子中的实际代码也说明这一点。大家可以编译一下,然后实际运行看看结果。

规则三、作为方法参数定义的变量可以在方法体内部访问。这里我们拿Main方法作为讲解:

class CommandLine {
public static void main(String[] args) {
if(args == null){
return;
}
for (int i = 0; i < args.length; i++)
System.out.println("args[" + i + "]: " + args[i]);
}
}

代码中我们可以看出,参数args在main方法里是都可以访问的。

规则四、类变量在类中的任何地方都可以访问。这个应该很容易理解。

根据上面给出的规则,可能会遇到这样的情况。我们定义了一个类变量名为fieldName,然后我们在方法methodA中,定义了一个方法变量fieldName,那么这时在methodA方法中访问fieldName,得到的值是什么呢?

我们在给出另一条规则,就可以解决这个问题。如下:

规则五、如果内部块中定义了和外部块中相同名称的变量,则内部块中的变量会覆盖掉外部块中的变量定义。

喜欢Java豆技术站点的文章,那就通过 RSS Feed 功能订阅阅读吧!

我要评论

*

* 绝不会泄露



返回首页 | 关于我们 | 联系我们 | 广告合作 | 网站地图 | 友情链接 | 版权声明 | 模板设计