局部变量与全局变量

本文介绍了Java中局部变量与全局变量的概念和区别。全局变量在类中有效,无需初始化即可使用,但局部变量必须先初始化再使用。当局部变量与全局变量同名时,全局变量在局部变量的作用域内被隐藏,如需引用全局变量需使用`this`关键字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在java语言中,依照作用范围可划分为局部变量与全局变量(也叫成员变量)。顾名思义,全局变量的范围肯定是比局部变量的范围广的,首先说一下全局变量。

全局变量:

直接在中声明的变量就叫做全局变量(即成员变量)

例如这段代码中,x,falg等变量都是在类中直接声明的,所以它们都是全局变量。

全局变量可以在其所在的整个类中被应用,并且定义时没有先后顺序,图中代码main方法写在flag声明的上端,而flag仍然可以被输出体现了这一点。但是为了增强代码的可读性,最好还是在类的顶部就声明好。

局部变量:

方法中的参数方法中定义的变量和代码块中定义的变量统称为局部变量。

作用域范围从定义的位置开始到其所在语句块结束。


public class Student{
	{
		int x=9;
		System.out.println(x);
	}
	
	public static void show(int arg) {
		if(arg == 1) {
			int y =2;
			System.out.println(y);
		}
		
		System.out.println(arg);
	}
	public static void main(String[] args) {
		new Student();
		show(1);
	}
}

例如在这段代码中,x是直接在语句块中定义的局部变量,arg是在方法参数中的局部变量,y是在方法中定义的局部变量,输出结果为9 2 1。

全局变量和局部变量在声明时有一个很大的区别:

全局变量在声明时若未进行初始化,那么系统将会根据变量的数据类型自动分配初始值:int分配初始值0,Boolean分配初始值false,char分配初始值空,而自定义类型则分配初始值null。

而局部变量则在声明后以及应用前必须进行初始化或赋值,因为局部变量没有默认值。


public class Student{
	public static void main(String[] args) {
		int x;
		System.out.println(x);
	}
}

像这样,声明x后没有初始化或者赋值就应用,程序会报错。

 值得注意的是,如果局部变量与全局变量名字相同,则在局部变量的作用范围内全局变量被隐藏,即这个全局变量在同名局部变量所在方法内暂时失效。如果在局部变量的作用域范围内访问该成员变量,则必须使用关键字this来引用成员变量。

例如: 


public class Student{
	int x;
	public static void main(String[] args) {
		int x=9;
		System.out.println(x);
	}
}

在这段代码中,局部变量和全局变量都叫x,而输出的结果为9,显然,由于变量同名,全局变量在这个方法中失效,x仅仅作为局部变量存在。如果想要在这个局部变量的作用范围内用到其同名的全局变量,则需要关键字this来引用。


public class Student{
	int x;
	public static void main(String[] args) {
		int x=9;
		System.out.println(this.x);
	}
}

这时的输出结果就变成了0(全局变量未初始化时的默认值)。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值