黑马程序员技术交流社区
标题:
变量的声明位置问题
[打印本页]
作者:
二月的雨
时间:
2014-12-5 05:13
标题:
变量的声明位置问题
有以下一个很基本的代码,变量max所处的位置不一样,eclipse中有一个会报错,这是为什么呢?
public class ArrayLearning
{
public static void main(String[] args)
{
double[] myList = new double[10];
double max = 0;
for(int i=0; i<myList.length; i++)
{
myList[i] = Math.random()*10;//随机获取10个初始化的值
System.out.println(myList[i]+" ");//打印这10个值
// double max = 0; //注意:若是变量放在这个地方声明及初始化,在for循环外会有注释里面的错误
if(myList[i] > max)
max = myList[i];
}
System.out.println("The max number is: "+max); //max cannot be resolved to a variable
}
}
作者:
二月的雨
时间:
2014-12-5 05:24
这个与C语言中的局部变量与全局变量,有关系吗?
作者:
清诗纪事
时间:
2014-12-5 07:14
你在for循环里边声明是局部变量,只在for循环之内有效,输出是在循环结束之后,肯定会变量没有声明的错误
把变量在for循环之外声明就没问题了,作为全局变量,在整个函数中都可以使用
作者:
HelloWorld!
时间:
2014-12-5 09:41
变量是有自己的作用范围的。成员变量:定义在类内部,方法体或语句块外部,作用在整个类。局部变量:定义在方法体或语句块内部,作用在方法体或语句块内,方法体或语句块执行完就消失了,外部无法访问到。
作者:
lwh316658735
时间:
2014-12-5 11:45
本帖最后由 lwh316658735 于 2014-12-5 11:50 编辑
两变量重名了,会报错!
两个max都在main方法里,方法里的叫局部变量,在方法被加载时一起在栈空间,栈空间就会出现max变量,而max的生命周期是在该方法运行完后消失,但是方法并没有运行完在for循环中又像栈中开辟max变量空间,所以重复了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2