Logo

郎哥编程

变量的有效范围

2019-12-06 932

Java虚拟机会为声明的变量分配存储空间,用于存储数据。在程序运行过程中,当变量不再使用时,Java虚拟机会释放为变量分配的存储空间,此时变量已经完成了它的使命,变量处于消亡状态,因此变量是有生命周期的。

变量的生命周期是指从声明一个变量并分配存储空间开始,到释放该变量并清除所占用的内存空间结束。前面说过,在类中声明变量时,可以在类体中声明变量,也可以在类的方法中声明变量。在类中声明变量的位置,决定了变量的有效范围。

变量的有效范围是指程序代码能够访问变量的区域。在类方法中声明的变量只能在类的方法内部使用,类方法内部的代码可以访问该变量,类方法外部的代码如果访问该变量,代码编译时会报错。在类体中声明的变量,可以在整个类的内部使用。

根据变量的有效范围,可以把变量分为全局变量和局部变量。全局变量在类体中声明,全局变量也称为成员变量,多用于类的属性声明。局部变量在类方法中声明,多用于方法内部存储临时数据,其有效范围仅限于该变量所在的方法内。

成员变量(全局变量)

按照变量的访问方式,成员变量又分为静态变量和实例变量。

静态变量用static关键字修饰,只要类被加载到内存,静态变量就会被分配存储空间。静态变量可以在类没有实例化的情况下,其他类可以通过“类名.静态变量”的方式访问该变量。

实例变量只有在类被实例化的情况下,才能够分配存储空间。其他类可以通过“实例化对象名.实例变量”方式访问该变量。

关于类的实例化在后面的课程内容会详细讲述。

局部变量

在类方法中声明的变量称为局部变量,局部变量的有效范围只能在声明该变量的方法体内,方法体外的代码不能访问该变量。

当方法被调用时,Java虚拟机会为方法内的变量分配存储空间,当方法调用结束后,Java虚拟机会释放方法内所有变量的已分配的存储空间,变量也被销毁。

在方法体内声明的变量名称(局部变量)可以和类体中声明的变量名称(成员变量)相同,此时方法体内的变量会掩盖成员变量,成员变量在该方法中失效。

变量的有效范围如下图所示:

 image.png                                            

变量的有效范围

案例1:在PBaseUnit43Case1项目unit43包下创建Case2类,在类中声明一个静态变量age,一个实例变量name,在main方法中声明一个局部变量height和name,然后输出age、name、height三个变量的值到控制台。代码如下:

/** 
* @Title: Case2.java 
* @Package unit43 
* @Description: Java基础知识课程案例
* @author 编程训练营 
* @date   
* @version V1.0 
*/ 
 
package unit43;
 
/** 
* @ClassName: Case2 
* @Description:  Java语言基础学习单元(变量的有效范围)案例1
* @author 编程训练营 
* @date
* 
*/
 
public class Case2 {
 
    // 声明静态变量age
    static String age = "21";
    // 声明实例变量name
    String  name = "Mary";
   
   
    /** 
    * @Title: main 
    * @Description: Java程序入口main方法  
    * @param @param args    参数 
   
    * @return void    返回类型 
    * @throws 
    */
 
    public static void main(String[] args) {
       // 声明局部变量height
        int height = 45;
        /**
         * 局部变量name和实例变量name名称相同
         * 实例变量name失效
         */
        String  name = "Henry";
        // 输出静态变量age
        System.out.println("静态变量age为:"+ age);
        // 输出实例变量name,实际输出的是局部变量name
        System.out.println("实例变量name为:"+ name);
        // 输出局部变量height
        System.out.println("局部变量height为:"+ height);
    }
 
}

程序运行结果如下图所示:


image.png

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论