黑马程序员技术交流社区
标题:
for语句里变量的一个小问题
[打印本页]
作者:
张文兵
时间:
2012-6-10 02:32
标题:
for语句里变量的一个小问题
for语句前定义了i,for语句()和{}里都不能够重复用了吗?为什么呢?我记得好像是可以着。for语句里的是局部变量,那么i就可以在for语句后面用了,这样理解对吗?[code=java]int i=8;
for (int j=0;j<=1;j++ )
{
//int i=8;
System.out.println(i);
}
int i=9;[/
作者:
江南
时间:
2012-6-10 02:39
首先你要明白:main方法也是一个方法,如果你把int i=8; 定义在main方法中它也属于局部变量,它的作用于是整个main方法内部,如果你在for循环里面又定义了类似于 for (int i=0;i<=1;i++ )的话,那么当然是变量重复了。 for语句()和{}里都不能够重复用了吗?这个是可以重复用的但是不能重复定义 例如for(i=0;i<=1;i++ )这样子还可以用但是不能在前面再加 int 加了就成了重复定义了
如果你把int i=8; 定义在成员变量中就ok了,你的 int i=8和int i=9;是在同一个范围内就会报错
代码如下
public class Test {
int i=8;
public static void main(String[] args) {
int j = 0;
for (int i=0;i<=1;i++ )
{
//int i=8;
System.out.println(i);
}
int i=9;
}
}
作者:
邵阳
时间:
2012-6-10 08:25
本帖最后由 邵阳 于 2012-6-10 08:27 编辑
一、自己的作用域,对于for来讲,如果将用于控制循环的增量定义在for语句中,那么该变量值在for语句内有效,for语句执行完毕,该变量在内存中被释放。
二、所以在for循环外有可以定义相同的变量,而不会出错。因为在for执行完之后变量在内存中已经被释放。
for (int j=0;j<=1;j++ )
{
//int i=8;
System.out.println(i);
}
int i=9;
这个是可以的
作者:
黄捷
时间:
2012-6-10 08:47
你这样定义完全没有问题啊!编译以及运行都不会报错,只是我们平时在写的时候不会把这些变量同时命名为i,这样的话阅读性太差了。只有在了解作用域的时候我们一般用同一个变量名来做试验。那么你就应该明确作用域的问题了。
你这第一个i在申明时(即i=8)是定义的成员变量,他是存放在对内存中的,作用于整个类中。你for循环中的变量i是存放在静态区的,只作用在for循环内部,如果for循环结束则i被回收,第三个i(i=9)是定义在函数里面的,存放在栈内存中,作用域整个函数。因此这三个变量的存储位置不同,导致这三个变量可以按照你说的这样定义。
但是正如我所说,阅读性太差,实际开发中不建议这样定义。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2