您的位置:首页 > 其它

全局变量和局部变量的区别

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会报错,提示



造成这个提示的原因在于:系统不会给局部变量

注意:局部变量名称可以和成员变量名一样!

如果某个方法中的局部变量的名字与全局变量的名字相同 则该全局变量在这个方法中暂时失效,此 举采用的是就近原则。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: