java里for循环与它的前后变量关系
2012-05-24 10:37
323 查看
今天在偶然阅读一份某企业的笔试题的时候看到这样一道java选择题:
下述程序代码中有语法错误的行是( )。
int i, la[10] , lb[10];/*a*/
for(int i=0;i<=9;i++)/*b*/
la[i]=0;/*c*/
la=lb;/*d*/
请选择:
A.a B.b C.c D.d
题目本身很简单,相信大家已经有自己的选择了。
这里我要说的是,我的选择是AB。
首先数组在初始化的时候才能给定长度,无可置疑。
可能有人要问了变量i是否重复定义了?
再看一个
for(int i=0;i<=9;i++)
i++;
int i=10;
以上语句是否有问题呢?
可能会有人说一样的。但是问题就是,不一样!
你也可以试验一下,以上语句没有问题。因为for循环相当于代码段,是独立的一个块。但是它比较特殊,不同于函数的是,对于函数中定义的变量,有他的作用范围;而位于for语句之前定义的变量或属性将会被for语句识别,并可以直接使用;而位于for语句之后的定义则会被for代码块遗忘,相当于for循环运行完成后,会将for循环以及其之前的所有变量和属性释放,程序告一段落。for循环之后的程序块将另起炉灶。这就是为什么位于for之前的重复命名不被允许的原因。
原谅我如此愚钝,才知道这么回事....
下述程序代码中有语法错误的行是( )。
int i, la[10] , lb[10];/*a*/
for(int i=0;i<=9;i++)/*b*/
la[i]=0;/*c*/
la=lb;/*d*/
请选择:
A.a B.b C.c D.d
题目本身很简单,相信大家已经有自己的选择了。
这里我要说的是,我的选择是AB。
首先数组在初始化的时候才能给定长度,无可置疑。
可能有人要问了变量i是否重复定义了?
再看一个
for(int i=0;i<=9;i++)
i++;
int i=10;
以上语句是否有问题呢?
可能会有人说一样的。但是问题就是,不一样!
你也可以试验一下,以上语句没有问题。因为for循环相当于代码段,是独立的一个块。但是它比较特殊,不同于函数的是,对于函数中定义的变量,有他的作用范围;而位于for语句之前定义的变量或属性将会被for语句识别,并可以直接使用;而位于for语句之后的定义则会被for代码块遗忘,相当于for循环运行完成后,会将for循环以及其之前的所有变量和属性释放,程序告一段落。for循环之后的程序块将另起炉灶。这就是为什么位于for之前的重复命名不被允许的原因。
原谅我如此愚钝,才知道这么回事....
相关文章推荐
- Java的垃圾回收机制,GC,和变量的创建和删除的关系(即变量的作用域,for循环中的某个变量,出了for循环再引用就会报错了,因为该变量已经被从内存中删掉了)
- 一个关于继承关系中静态快、成员变量、构造体代码的执行顺序的Java代码
- Java中构造代码块和成员变量初始化的顺序关系
- java中jdk与jre的关系以及环境变量配置时Java_Home\Path\ClassPath各代表什么意思
- Java继承关系的父子类中相同的成员变量
- Java中成员变量和属性之间的关系
- 关于Java语言for循环内外变量定义的问题
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- Java中字段、域与成员变量关系
- Java继承关系的父子类中相同的成员变量
- Java继承关系中,父类方法使用实例变量和调用实例方法的探究
- JAVA成员变量与局部变量的关系
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- Java第二课 Java面向对象编程,面向对象编程和面向过程编程的区别,我们如何才能掌握面向对象的编程,类和对象的关系;讲解了Java中的构造、重载、this和super变量、静态变量、Java中的常
- java学习心得:关于对象与引用变量的关系的理解
- java变量类型之间的转换关系
- Java继承关系的父子类中相同的成员变量
- Java中构造代码块和成员变量初始化的顺序关系2之 Cannot reference a field before it is defined
- 2002 年前后还发生了一件与Java 没有直接关系,但...
- java 变量创建后在内存中的存储关系+空指针异常机理+图文解释