您的位置:首页 > 编程语言 > Java开发

java 和 c等作用域问题,循环中重复定义变量

2011-03-02 15:35 661 查看
刚才有人问了一个java 中类似下面代码为何不会出现重复定义问题

1: for (i = 0; i < 4; i++)


2: {


3:     int a = i*4;


4:     //other codes


5: }


变量在程序中是有作用域的,在同一个作用域的变量名必须是唯一的,不能重复。这不仅仅是java这样规定的,几乎所有的程序语言都是这样的。而java中作用域在一对{}中。常见的变量作用域的例子有:

1. 类中定义的成员变量整个类中都是可用的。

2. 而方法中定义的变量则一般仅限于包含该变量定义的{}中,即拥有块作用域。

3. for(int i = 0; i< n; i++){…},则i的作用域在整个循环内,函数参数作用域在整个函数。

4. java中内层的变量不能覆盖外层同名变量,而c 中则可以,例如下面代码

1:  {

2:      int a;

3:  }

4:  int a;


在c 和java 中都可以编译通过,但是若改为下面代码,

1:  int a;

2:  {

3:      int a;

4:  }


在c 中可以编译通过,外层a被内层覆盖,但java中不允许这种覆盖,因此,编译会有错误。

因此,我们可以回答开头的问题:

循环中定义的变量a 的作用域只在循环内部有效,当一轮循环结束时,a 已经被销毁,进入下一轮循环时,定义的a 与上一轮循环中的变量a已无关系,因此不会有重复定义的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐