全局变量和局部变量的区别
2017-04-15 00:00
106 查看
全局变量:也称 成员变量,是指在类中定义的变量;它在整个类中都有效
全局变量又可分为:类变量和实例变量
1.类变量:又叫静态变量 用static修饰 它可以直接用类名调用 也可以用对象调用 而且所有对象的同一个类变量都是共享同
一块内存空间的
2.实例变量:不用static修饰 它只能通过对象调用 而且所有对象的同一个实例变量是共享不同的内存空间的
局部变量:是指那些在方法体中定义的变量以及方法的参数 它只在定义它的方法内有效
它们之间的区别主要如下:
在类中的位置不同: 全局变量声明在类体中
局部变量声明在方法体中 或者方法声明上。
在内存中的位置不同:
成员变量在堆内存
局部变量在栈内存
存在周期不同:
成员变量是随着对象的创建而存在,随着对象的消失而消失
局部变量是随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同:
成员变量有默认初始化值 ,默认值为0。(被final修饰且没有static的必须显式赋值)
局部变量没有默认初始化值,必须由程序员主动定义,初始化赋值,然后才能使用。
可用修饰符类型不同
成员变量可以被public,protect,private,static等修饰符修饰
局部变量不能被控制修饰符及static修饰
两者都可以定义成final型
参考代码如下:
package net.oschina; public class VariableDemo { int memberVar1;//没有初始化值的成员变量 默认值为0 int memberVar2 = 10;//有初始化值的成员变量 public static void main(String[] args) { int localVar1;//没有初始化值的局部变量,没有默认初始化值。 直接使用会被系统提示报错 int localVar2 = 30;//有初始化值的局部变量 VariableDemo vd = new VariableDemo();//创建类的对象,用以访问该类的成员变量 System.out.println("成员变量memberVar1的值是:"+vd.memberVar1); System.out.println("成员变量memberVar2的值是:"+vd.memberVar2); // System.out.println("局部变量localVar1的值是:"+localVar1); System.out.println("局部变量localVar2的值是:"+localVar2); } }
输出结果如下所示:
如果直接调用没有初始化赋值的局部变量localVar1,eclipse会报错,提示
造成这个提示的原因在于:系统不会给局部变量
注意:局部变量名称可以和成员变量名一样!
如果某个方法中的局部变量的名字与全局变量的名字相同 则该全局变量在这个方法中暂时失效,此 举采用的是就近原则。
相关文章推荐
- 全局变量和局部变量在内存里的区别?
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- C 发现个全局变量与局部变量的区别
- 多线程有关全局变量和局部变量的区别,注意a,b
- 全局变量和局部变量的区别
- C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
- C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
- 2010.4.8 全局的静态的变量和局部变量的区别
- C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
- 全局变量 局部变量 静态全局变量 静态局部变量的区别
- 全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?
- C++ 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 全局变量、静态全局变量、静态局部变量和局部变量的区别
- 全局变量和局部变量在内存里的区别?
- 温习:C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
- 全局变量与局部变量的区别
- 全局变量和局部变量在内存里的区别
- 全局变量、局部变量、静态全局变量、静态局部变量的区别
- 全局变量和局部变量在内存里的区别?
- C 发现个全局变量与局部变量的区别