成员变量、静态成员变量、局部变量、常量的内存区域

本文详细介绍了Java中的局部变量、成员变量、静态变量以及常量的存储位置,区分了基本类型与引用类型,并讨论了包装类的作用。

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

一、Java中没有全局变量的概念,变量分为类的成员变量、静态成员变量和方法中的局部变量

1、局部变量,基本类型的局部变量变量名和值都存放在虚拟机栈中,引用类型的局部变量变量名存放在栈中,而变量指向的对象存放在堆中。记也很好记,因为局部变量属于方法里面的,而方法都是在栈里面。

2、成员变量:不论基本类型还是引用类型,变量名和值都随着类的实例(对象)而创建,所以存放在堆中。记也很好记,成员变量一定要有类的实例对象,类的实例对象肯定是在堆里面。

3、类的静态变量,它比较特殊,是属于类的变量,在jdk7及之前的版本,随类存放在方法区中。在jdk8之后,由于虚拟机内存结构的变化,静态变量和常量池一起被迁移到了堆中。因为静态变量是随着类加载一起加载,因为类是在方法区加载的,所以1.7是存在方法区。

二、常量有三种类型:静态常量、成员常量和局部常量
其实也就是被Final修饰的变量,分为常量名,常量值

1、局部常量:
2、成员常量:常量存放在常量池中,而常量池在堆内存中(1.7方法区,1.8堆)
3、静态成员常量:存放在全局数据区内存中-堆中

三、基本类型、引用类型、包装类型

Java提供了两个类型系统,基本类型与引用类型 (包装类是一种引用类型,而基本数据类型是一种值类型),使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类。

Java中每一种基本类型都会对应一个唯一的包装类,基本类型与其包装类都可以通过包装类中的方法进行转换。每种基本类型及其包装类的对应关系如下,值得注意的是,所有的包装类都是final修饰的,也就是它们都是无法被继承和重写的。

写的非常不错的文章

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信仰_273993243

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值