局部变量和全局变量

Java中的局部变量与全局变量解析
本文介绍了Java中的变量分类,重点关注全局变量(成员变量)和局部变量的区别。全局变量在类的整个范围内有效,有默认初始值,而局部变量仅在其定义的代码块内有效,使用前必须初始化。当局部变量与全局变量同名时,全局变量在局部变量的作用域内暂时失效。

变量的分类

在这里插入图片描述

全局变量(成员变量)

定义:直接在类中声明的变量成为全局变量。

package Student ;
public class Student1 {//类
	static String id;
 	String name;
 	String mobile;
	String adress;//全局变量,且有默认值,int型为0,浮点习型为0.0,引用型为null,字符串型为空。作用在整个类里面

全局变量定义在类下面,其中id为静态全局变量,name,mobile,adress均为非静态全局变量。
注意

  • 全局变量的作用范围是在该“类”中整个适用,在该类中的任意位置可以根据该全局变量的性质和特点通过不同方法来调用该全局变量;
  • 全局变量默认存在初始值,整形(int型全局变量的初始值为0);布尔型(Boolean型全局变量的默认值为false);浮点型(double型全局变量默认值为0.0);字符型(char型全局变量默认初始值为空);引用类型全局变量的默认值为null。
public class Field {

	static int v;//定义int类型数据;
	static double w;//定义double类型数据;
	static char x;//定义char类型数据;
	static boolean y;//定义boolean类型数据;
	static String z;//定义String类型数据;
	public static void mian (String []args){
		System.out.println(v);//输出0;
		System.out.println(w);//输出0.0;
		System.out.println(x);//输出空,实质上此时x的值为0;	
		System.out.println(y);//输出false;
		System.out.println(z);//输出null;
	}
}

成员变量定义后,其作用域是其所在的整个类。成员变量的定义没有先后顺序,但是最好将成员变量的定义集中在类的顶部。

public class Field {
	static int x =10;//定义int类型;
	public static void main (String []args){
		System.out.println(x);//输出10;
 		 System.out.println(flag);//输出true ;
		}
	static  boolean  flag =true ;//定义boolean类型数据;
}	


局部变量

定义位置:代码块
非静态代码块,创建对象时执行,方法参数列表,方法体内定义的变量均为局部变量

定义:方法中的参数、方法中定义的变量和代码块中定义的变量统称为局部变量。
作用范围:局部变量的作用域范围从定义的位置开始到其所在语句块结束。
在这里插入图片描述
但是其作用域为从定义的位置开始到其自其所在直接语句块结束;

在这里插入图片描述
注意:局部变量在使用以前必须显式初始化或赋值,局部变量没有默认值。

public static Field {
	static void show (int x);//**不会报错,因为show方法在调用时一定会引入一个具体的值。**
	int y;//方法中的局部变量
	//**System .out .println("y="+y);  程序在编译时会报错,因为y在定义的时候没有默认值也没有赋给初始值**
	y=2;//赋值
	System.out .println ("y="+y);//输出2
	}
	public static void main String []args){
	show (1);
	}
}	

声明局部变量时,数据类型前除final外不允许有其他关键字,即其定义格式为: [final] 数据类型 变量名 = 初始值;
非静态代码块,创建对象的时候执行

在这里插入图片描述
1.如果局部变量的名字与全局变量的名字相同,则在局部变量的作用范围内全局变量被隐藏,即这个全局变量在同名局部变量所在方法内暂时失效。
2.如果在局部变量的作用域范围内访问该成员变量,则必须使用关键字this来引用成员变量。
在这里插入图片描述

	double a=1.0;
 		{
			  System.out.println(this.a);
 				 int a=1;
  			  System.out.println(a);//如过局部变量名与成员变量名相同,则在局部变量作用范围内使用的是局部变量的值,如果使用全局变量,则需要使用this
  	         } 

static {
 int a=100;
 System.out.println(对象名称.a);//this不能用在静态方法或者代码块中
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值