2 u010775468 u010775468 于 2016.05.04 08:44 提问

java中的变量的作用域问题

新人初学java,在变量的作用域这里卡了下
我知道全局变量和局部变量,但是如果我在main的开头就申明了一个变量,那这个变量应该是全局变量吧,下面所有的方法都可以调用这些变量,但是如果我在main函数中间申明了一个变量,那这个变量算什么?还算是全局变量吗?是不是只有后面的方法才能使用它,而在他之前的就不能用?
还有一个问题:
File tmp;
while(!list.isempty()){
tmp = (File)list.removeFirst
.....
}
这段语句在while语句外面先是定义了一个对象天麻片,但是却在while语句中才分配空间,那是不是可以理解为这个tmp是一个list列表里第一个元素的引用,要对这第一元素操作的话,是不是直接操作tmp就可以了?
在下先谢谢各位了

6个回答

caozhy
caozhy   Ds   Rxr 2016.05.04 08:45

main的开头是什么意思,是main方法的上一行,还是main方法内,如果是上一行,那么如果是static的,那么可以算作“全局变量”,否则是成员变量。写在main里面,无论最上面还是哪里,都是成员变量。

caozhy
caozhy   Ds   Rxr 2016.05.04 08:46

java和C++不同,成员变量不需要先申明后使用,所以你可以在作用域可见的范围内,不管前面后面都可以访问。
不过作为局部变量,必须先定义后使用
i = 1;
int i;
这是不行的。

caozhy
caozhy 回复键盘手C: 是
一年多之前 回复
u010775468
u010775468 哦哦,谢谢,就是相当于是是说我在第三行定义了,那么只有在第三行以后任意行才可以使用吗
一年多之前 回复
caozhy
caozhy 回复键盘手C: 不行
一年多之前 回复
u010775468
u010775468 谢谢,那么这个写在main内部的,作为一个成员变量的话,是不是如果我在第三行定义了,相当于即使我在第一行仍然可以调用?
一年多之前 回复
u010775468
u010775468 谢谢,那么这个写在main内部的,作为一个成员变量的话,是不是如果我在第三行定义了,相当于即使我在第一行仍然可以调用?
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.05.04 08:51

关于变量的作用域问题
Shell中变量的作用域问题
关于栈和堆中变量的作用域问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

chenhchen1994
chenhchen1994   2016.05.04 09:10

定义在类中,属于全局变量,定义在方法中属于局部变量。全局变量 在整个类中都可以调用,而局部变量只能在方法里调用,如果想要调用,需要传出去。

qq_32059827
qq_32059827   2016.05.04 09:25

成员变量和局部变量的区别?
A:在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
B:在内存中的位置不同
成员变量:在堆内存
局部变量:在栈内存
等等在我博文中有详细解释

                    我在写java零基础入门的博客文章,每一篇都有代码案例进行理解,有的还配上内存图解释。有关于成员变量和全局变量的问题详细讲解,而且后后边也会有专题的形式讲解这个问题的。您可以关注看一下,一起讨论。当然其他看到的同行也可以进行参考讨论,我的博客地址:http://blog.csdn.net/qq_32059827
qq_32059827
qq_32059827 不客气,您可以进我得博文一起进行探讨,和大家一块讨论。
一年多之前 回复
u010775468
u010775468 谢谢,我回去好好学习学习的
一年多之前 回复
qq_30715329
qq_30715329   2016.05.04 08:54

tmp 只是list底层元素的一个引用,操作tmp不会改变底层元素的。你那代码只是取出了list 的首元素

u010775468
u010775468 哦哦,那就是说第二种的定义就是指的是一个引用了?e指向tmp这个变量?
一年多之前 回复
qq_30715329
qq_30715329 回复键盘手C: File tmp=e ; 可以这么理解的
一年多之前 回复
u010775468
u010775468 谢谢,只是有个地方总是搞不懂,File e = new File(), File e = tmp;这两条语句第一个是不是实例化一个对象,而第二个则是一个引用,相当于一个指针(java中无指针)是不是可以这样理解
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!