java 变量,以及存放位置等

概念

  1. 局部变量:在方法内定义的变量称为“局部变量”或“临时变量”,方法结束后局shu部变量占用的内存将容被释放。
  2. 成员变量:在类体的变量部分中定义的变量,也称为字段。
  3. 全局变量:全局变量,又称“外部变量”,它不是属于哪个方法,作用域从定义的地址开始到源文件结束。

作用域

局部变量和成员变量主要是他们作用域的区别:

  1. 成员变量个是类内部;局部变量是定义其的方法体内部(或者方法体内部的某一程序块内——大括号,主要看定义的位置)。
  2. 成员变量可以不显式初始化,它们可以由系统设定默认值;局部变量没有默认值,所以必须设定初始赋值。

存储位置

  1. 对于局部变量,局部变量在所在方法调用时,如果是基本类型,会把值直接存储在栈;如果是引用类型,比如String s = new String(“william”);会把其对象存储在堆,而把这个对象的引用(指针)存储在栈。
再如
String s1 = new String(“william”);
String s2 = s1;
s1和s2同为这个字符串对象的实例,但是对象只有一个,存储在堆,而这两个引用存储在栈中。
  1. 成员变量在所在类被实例化后,存在堆内存中。但是静态变量,常量等存放在方法区中。
  2. 全局变量存放在方法区。

全局变量、静态变量、常量、所有方法(包括静态和非静态的)在方法区;堆储存对象、数组(成员变量)、非静态变量(成员变量)。方法区中的内容是被共享的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值