首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

求高手点拨:“Java代码中的变量作用域”的有关问题.

2013-09-05 
求高手点拨:“Java代码中的变量作用域”的问题...高手,您好:求您点拨:我写的代码:我看到:这里的for语句,在a2

求高手点拨:“Java代码中的变量作用域”的问题...
高手,您好:
    求您点拨:
    我写的代码:
    求高手点拨:“Java代码中的变量作用域”的有关问题.
    我看到:
    这里的for语句,在a2,没有“被赋值”的语句出现时,应该会将在第16行定义的,在第20行,仍然属于这个第16行定义的a2的作用域的位置处,进行:
    直接取第16行的a2,的操作吧...

    简单滴说,我的问题是:
    这里的for语句,在a2,没有“被赋值”的语句出现时,应该会将在第16行定义的,在第20行,仍然属于这个第16行定义的a2的作用域的位置处,进行:
    直接取第16行的a2,的操作吧...
    为什么图中的第20行代码的整型变量,“会出错”?
    这个错误的“科学原理”是什么...?
    谢谢高手!!
    100分奉上!!
    敬礼
                                                      一位日日夜夜向着理想奔跑的需要帮助的新手                                                                                                           
                                                     2013年6月17日早晨1点18分 顶起。。。。。。
[解决办法]
因为for循环相当于代码段,是独立的一个块。


但是它比较特殊,不同于函数的是,对于函数中定义的变量,有他的作用范围;
而位于for语句之前定义的变量或属性将会被for语句识别,并可以直接使用;
而位于for语句之后的定义则会被for代码块遗忘,相当于for循环运行完成后,会将for循环以及其之前的所有变量和属性释放,程序告一段落。for循环之后的程序块将另起炉灶。
这就是为什么位于for之前的重复命名不被允许的原因。 
[解决办法]
错误: 不是语句
第二十行的因为for(;;)语句中a2是变量,不是表达式,for语句的一般格式是:(括号中的三个都是表达式,可以没有)
for(表达式;表达式;表达式)语句 

[解决办法]
for(a2=0;a2<=999;a2++)
第一个语句是初始化
你的没初始化就错了

[解决办法]
a2=0;a2<=999;a2++
这样写就对了
[解决办法]

引用:
错误: 不是语句
第二十行的因为for(;;)语句中a2是变量,不是表达式,for语句的一般格式是:(括号中的三个都是表达式,可以没有)
for(表达式;表达式;表达式)语句 

++
[解决办法]
你的错误不是int a=200;变量的声明问题 和 作用域的问题
 而是 for(;a<900;a++){      //当a已经被初始化时,不再赋值,第一个应该不写,而不是
                                      //    for(a,a<900;a++)这样a就不被是识别了;                                  

作用域,变量的最近的一个大括号之间 就是他的作用域;
[解决办法]
你理解的是对的,for里确实还在a2变量的作用域内,
你的编译错误与作用域无关。
你的代码就比如下面,

int a2 = 100;
a2;

你觉得不会编译错误么。。。
最少应该用表达式。
int a2 = 100;
for (a2 = 150; a2 <= 999; a2++) {
}
[解决办法]
for循环的语法就是第一个分号前的表达式就是为了初始化,如果业务需求,你可以先在外面声明变量,使用for循环的表达式来初始化变量的值。

int a2;
for (a2 = 100; a2 <= 999; a2++) {
   System.out.print(a2);
}

如果你就是想那么写的话,也可以这样。
int a2 = 100;
for (; a2 <= 999; a2++) {
   System.out.print(a2);
}
[解决办法]
这个和域以及变量,木关系。
for循环语法错误。你写一个a2 ,让编译器如何理解呢?

热点排行