java中的变量的作用域问题

问题描述

java中的变量的作用域问题

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

解决方案

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

解决方案二:

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

解决方案三:

关于变量的作用域问题
Shell中变量的作用域问题
关于栈和堆中变量的作用域问题

解决方案四:

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

解决方案五:

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

                    我在写java零基础入门的博客文章,每一篇都有代码案例进行理解,有的还配上内存图解释。有关于成员变量和全局变量的问题详细讲解,而且后后边也会有专题的形式讲解这个问题的。您可以关注看一下,一起讨论。当然其他看到的同行也可以进行参考讨论,我的博客地址:http://blog.csdn.net/qq_32059827

解决方案六:

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

时间: 2024-12-22 15:12:20

java中的变量的作用域问题的相关文章

java中关于变量的作用域的问题

问题描述 java中关于变量的作用域的问题 在java中局部变量,实例变量,类变量的作用域都分别是什么呢? 解决方案 在java中: 局部变量:一般指的就是方法内部的变量,它的作用域范围就是定义方法体内部,也就是两个花括号之间,出了这个范围就访问不到了.实例变量实例变量也叫_非静态成员变量_,它的作用范围是在当前类创建的实例对象范围,如果当前实例对象被销毁,它也将随之消失,各个实例对象之间互不影响.类变量类变量也叫_静态成员变量_,顾名思义类变量,它就是跟当前类有关系的,它是属于当前类的.cla

java中 的变量在方法间的传递权限问题

问题描述 java中 的变量在方法间的传递权限问题 我现在定义了方法1(),在该方法里用了scanner获取了一个整数a,对这个整数进行了相关操作,返回了一个字符串s,但是我现在定义了一个方法2(),该方法要接收方法1()返回的字符串s,该方法同时也要用到方法1()中scanner获取的那个整数a,进行操作后返回一个整数b(b用main()函数接收),那么问题就来了,方法1只能返回一个字符串s,那么方法2()怎么获取方法1()的那个用scanner接收到的整数呢?我的想法是将方法1()中的sca

深入理解JS中的变量及作用域、undefined与null

 本篇文章主要是对JS中的变量及作用域.undefined与null进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 Situation One   代码如下: <script> var i; //全局变量 //方法名是camel命名法 //方法里面的变量是局部变量   function sayHello(){ var x=100; alert(x); x++; } sayHello(); //输出100 alert(x); //报错,因为x是局部变量,访问不到 </scr

java 使用变量-java 中使用变量之前是不是一定得判断是否为空?

问题描述 java 中使用变量之前是不是一定得判断是否为空? java 中使用变量之前是不是一定得判断是否为空? java 中使用变量之前是不是一定得判断是否为空? 解决方案 Java 中判断 String 变量为空的条件 解决方案二: 这个要视情况而定了.如果你定义的时候给了初始值,并且在程序运行过程中,你确定没有其他地方该对象进行null赋值,那么就不需要判断了. 如果你不确定,那么最好在使用前判断下,避免空指针异常 解决方案三: 其实从安全性考虑,无论何时,只要使用了该变量都最好判断一下,

java中static变量和static方法以及普通方法在那个内存中存储呢? 请高手指点,谢谢

问题描述 java中static变量和static方法以及普通方法在那个内存中存储呢? 请高手指点,谢谢 栈内存:局部变量和对象的引用变量: 堆内存:对象: 以上是我所知道的,那么static变量和static方法以及普通方法在那个内存中存储呢? 请高手指点,谢谢 解决方案 static和普通方法都存在堆内存中,堆内存有个永久区permgen,这里面会存类信息. 所以不断的加载类或jar包可能出现permgen oome的错误. static是在堆内存的数据区. 解决方案二: java stat

java中final 变量作为方法的参数?怎么理解?见下面代码

问题描述 java中final 变量作为方法的参数?怎么理解?见下面代码 class NiMingLei { public static void main(String[] args) { Outer out= new Outer(); out.function(7); out.function(8); } } class Outer { static int y=4; void function(final int a) { class Inter { void method() { Sys

Python中的变量和作用域详解_python

作用域介绍 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的: G:globa,全局变量,就是模块级别定义的变量: B:built-in,系统固定模块里面的变量,比如int, bytearray等. 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB. x = int(2.9) # int bu

java中静态变量的生存周期或范围

问题描述 java中静态变量的生存周期或范围 在一个类里main方法中实现多个实例,会共享静态变量并可修改静态变量,但是在另一个类里main方法中再实现前面那个类的实例,静态变量又回到初始值了- 解决方案 变量就是变量的,它不可能保存起来共两个main共享的:其实两个main的话,你一个一个的执行,程序也是从上执行到下的,你顺着这个顺序看看你的程序你就 明白了,这个和静态变量是没有什么关系的:你在两个main里实现的实例是两个不同的对象这点你记清楚: 如果回答对你有帮助,请采纳 解决方案二: 这

java中哪些变量应该写在服务器,哪些变量应该写在客户端

问题描述 java中哪些变量应该写在服务器,哪些变量应该写在客户端 java中哪些变量应该写在服务器,哪些变量应该写在客户端 客户端的变量和服务器端的变量是一一对应的吗 解决方案 服务器和客户端是两个程序,甚至不是一种语言,和变量没有什么关系.一般来说,服务器放敏感的数据,比如用户账户密码,充值余额之类的.客户端放相对不敏感的数据,比如说用户设置,上次登录的用户名等等. 你一个完整的系统,两者当然是相关的. 解决方案二: 客户端用到的变量写在客户端 服务端用到的变量写在服务端