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

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

1、定义
直接在类中声明的变量叫成员变量又称全局变量。
方法中的参数、方法中定义的变量和代码块中定义的变量统称为局部变量。
2、作用范围
全局变量定义后,其作用域是其所在的整个类,全局变量的定义没有先后顺序,但最好将全局变量的定义集中在类的顶部。
局部变量的作用范围从定义的位置开始,到其所在语句块结束。

public class Student {
	public String id;
	public String name;
	public String address;
	public String mabile;
	public static void print(int b) {
		System.out.println(b);
		if(b == 1) {
			int c = 100;
			System.out.println(c);
		}
//		System.out.println(c);
	}
	public static void main(String[] args) {
		Student.print(1);
	}
	}

运行结果:
在这里插入图片描述
如果将该程序中的注释符去掉程序将会报错,因为变量c的作用范围只在if语句中。

3、有无默认值
全局变量有默认值。如果未对全局变量设置初始值,则系统会根据全局变量的类型自动分配初始值:int分配初始值0、boolean分配初始值false,而引用类型则分配初始值null。
局部变量没有默认值,使用局部变量前必须进行初始化。

public class Student {
	public String id;
	public String name;
	public String address;
	public String mabile;
	public int age;
	public boolean pass;
	 {
		int a = 100;
		System.out.println(a);
	}
	public static void main(String[] args) {
		Student student = new Student();
		System.out.println(student.address);
		System.out.println(student.id);
		System.out.println(student.mabile);
		System.out.println(student.name);
		System.out.println(student.pass);
		System.out.println(student.age);
	}
	}

运行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190727162732404.png
在该程序中如果不对局部变量赋初值程序将会报错。
4、如果全局变量与局部变量变量名相同
在研究这个问题之前,我们需要先了解一下静态方法对变量的调用。静态方法既可以用类名调用也可以用创建的对象调用,推荐用类名调用。非静态方法只能用创建的对象调用。静态方法可以直接调用静态变量,但如果变量是非静态的则静态方法中只能通过对象调用。
如果局部变量的变量名与成员变量的变量名相同,则在局部变量作用范围内使用的是局部变量的值,如果要使用全局变量,则需要使用关键字this。this不能用在静态方法或代码块中,如果需要在静态代码块中调用全局变量,则须通过创建对象调用或者通过类名调用。(具体操作参照上文静态方法对变量的调用。)

public class Student {
	public String id;
	public String name;
	public String address;
	public String mabile;
	double a = 0;
	{
		System.out.println(a);
		int a = 10;
		System.out.println(a);
		System.out.println(this.a);
	}//如果局部变量的变量名和成员变量的变量名相同,则在局部变量作用范围内使用的是局部变量的值;如果使用全局变量则需要使用this.
	static {
		int a = 100;
		System.out.println(new Student().a);
	}//this不能使用在静态方法或代码块中
	public static void main(String[] args) {
		
	}
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值