读书人

求高手点拨:“Java代码中的变量作用域

发布时间: 2013-09-05 16:02:07 作者: rapoo

求高手点拨:“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 ,让编译器如何理解呢?

读书人网 >J2SE开发

热点推荐