成员变量、局部变量和全局变量

本文详细解释了成员变量、局部变量及全局变量的概念与区别。成员变量位于类声明内,需通过对象访问;局部变量定义于函数或代码块内,其作用域受限;全局变量则在整个文件范围内有效。

闺蜜今天突然问我成员变量、局部变量以及全局变量,我一时懵逼忘记了。加上之前这三个就一个没怎么弄明白(分不清)。今天特意去找了下资料有收获大笑


成员变量:写在类声明的大括号中的变量,成员变量只能通过对象访问

注:成员变量不能离开类,离开类后就不是成员变量。成员变量不能再定义的同时进行初始化。

存储:堆(当前对象对应的堆存储空间中),存储在堆中的数据不会被自动释放,只能用程序手动释放。


全局变量:写在函数和大括号外面的变量

作用域:从定义的那一行开始,一直到文件结尾。

存储:在静态中去。程序一启动就会分配存储空间,知道程序结束释放


局部变量:写在函数或代码块内部的变量。

作用域:从定义的那一行开始,一直到遇到大括号或return结束

存储:栈,存储在栈中数据有一个特点,系统会自动给我们释放。

### Java 中成员变量局部变量全局变量的关系 #### 成员变量 成员变量属于类的一部分,在整个对象生命周期内都有效。这些变量存储于堆内存中,随着对象的创建而分配空间,并随对象销毁而释放。成员变量可以由权限修饰符(public, protected, private 或 default) 数据类型关键字定义[^5]。 #### 局部变量 局部变量仅限于特定的方法、构造器或语句块中使用。它们存在于栈内存上,当方法执行完毕后即被清除。因此,局部变量的作用范围非常有限,只在其声明的地方可见并可用。如果同名的情况下,函数内部会优先考虑局部变量而不是外部相同名称的其他类型的变量[^2]。 #### 所谓“全局变量” 需要注意的是,“全局变量”的概念并不适用于Java标准语法;通常所说的“全局变量”,实际上指的是静态(static) 变量或者是类级别的成员变量。这类变量在整个应用程序范围内都是可访问的,只要通过相应的类名就能获取其值,无需先实例化该类的对象。然而,严格来说这并不是真正的全局变量,因为仍然受限于包保护机制其他安全措施[^3]。 #### 关键差异总结 - **作用域**: 成员变量可以在整个类及其子类中访问;局部变量则局限于所在的方法体内;所谓的“全局变量”实际上是带有`static`属性的成员变量,可通过类名直接引用。 - **生存周期**: 成员变量伴随对象的存在而存在;局部变量存活期较短,一般不超过一次完整的流程控制结构(如循环体外)。对于标记为 `static` 的成员变量而言,它会在加载类时初始化,并一直持续到JVM终止运行为止[^4]。 ```java class VariableDemo { // 成员变量 (也称为实例变量) int memberVariable; static int classLevelStaticVar; // 类级别静态变量 void methodExample(){ int localVar = 10; // 局部变量 System.out.println(localVar); // 访问局部变量 System.out.println(memberVariable); // 访问成员变量 System.out.println(classLevelStaticVar); // 访问静态变量 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值