首页 > 编程语言 >java成员变量在堆_java的基本类型的成员变量在栈还是堆?

java成员变量在堆_java的基本类型的成员变量在栈还是堆?

时间:2023-04-26 09:57:13浏览次数:47  
标签:java 变量 方法 成员 放在 类型 声明

转、:

java成员变量在堆_java的基本类型的成员变量在栈还是堆?

 

先说结论,放在堆中

只要是成员变量,所在的类被实例化,不管是不是基础类型都会放在堆中

第一个结论就是错的

基本数据类型是放在栈中还是放在堆中,这取决于基本类型声明的位置。

第一种: 在方法中声明的变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有效的原因

(1)当声明是基本类型的变量的时,其变量名及值(变量名及值是两个概念)是放在方法栈中

(2)当声明的是引用变量时,所声明的变量(该变量实际上是在方法中存储的是内存地址值)是放在方法的栈中,该变量所指向的对象是放在堆类存中的。

第二种 在类中声明的变量是成员变量(全局变量),放在堆中

1 声明的是基本类型的变量,其变量名及其值放在堆内存中

2. 声明的是引用类型时,其声明的变量仍然会存储一个内存地址值,该内存地址值指向所引用的对象。引用变量名和对应的对象仍然存储在相应的堆中

记住一个原则即可:方法体中的引用变量和基本类型的变量都在栈上,其他都在堆上
————————————————
版权声明:本文为CSDN博主「weixin_39860919」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39860919/article/details/114347420

 

标签:java,变量,方法,成员,放在,类型,声明
From: https://www.cnblogs.com/nextgg/p/17354751.html

相关文章

  • Java基础之String字符串的底层原理,面试常见问题
    前言在之前的两篇文章中,给大家介绍了String字符串及其常用的API方法、常用编码、正则表达式等内容,但这些内容都是停留在”如何用“的阶段,没有涉及到”为什么“的层面。实际上,我们在求职时,面试官很喜欢问我们关于String的一些原理性知识,比如String的不可变性、字符串的内存分配等......
  • java程序jar包打包成exe文件
    说明:将java程序打包成window系统下的exe文件分三步第一步:创建java程序,需要包含一个主方法;第二步:打jar包,通过模块打包。第三步:构建exe,使用软件exe4j将jre,jar包构建成exe文件 案例演示:第一步:创建java程序,需要包含一个主方法; ......
  • JavaScript设计模式
    JavaScript设计模式设计模式概念经过代码设计经验总结之后设计出的一种固定解决问题的方式设计模式作用代码复用保证代码可靠性将编程工程化更易被他人理解设计模式的分类(W3C平台)构造器模式,模块化模式,暴露模块模式,单例模式,中介者模式,原型模式,命令模式,外......
  • 基于Java开发的全文检索、知识图谱、工作流审批机制的知识库
    一、项目介绍一款全源码,可二开,可基于云部署、私有部署的企业级知识库云平台,应用在需要进行常用文档整理、分类、归集、检索的地方,适合知识密集型单位/历史文档丰富的单位,或者大型企业、集团。为什么建立知识库平台?二、项目所用技术springboot+vue+tinyMce+activiti+elastics......
  • java垃圾回收机制(面试)
    1.1堆空间结构Java的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java自动内存管理最核心的功能是堆内存中对象的分配与回收。Java堆是垃圾收集器管理的主要区域,因此也被称作GC堆。Eden区、两个Survivor区S0和S1都属于新生代,中间一层属于老年......
  • 每日八股文之Java
    1、请你说说ConcurrentHashMap数组+链表+红黑树、锁的粒度ConcurrentHashMap的底层数据结构与HashMap一样,也是采用“数组+链表+红黑树”的形式采用锁定头节点的方式降低了锁粒度,以较低的性能代价实现了线程安全。它的线程安全的实现机制:初始化数组或头节点时,ConcurrentHa......
  • kafka入门例子 for java
    1,生产者importjava.util.Properties;importkafka.javaapi.producer.Producer;importkafka.producer.KeyedMessage;importkafka.producer.ProducerConfig;publicclassTestProducer{publicstaticvoidmain(String[]args){Propertie......
  • JAVA
    1编写输出到控制台窗口的程序矩形,其侧面尺寸,宽度:23列,高度:11行;publicclassH1{publicstaticvoidmain(String[]args){introws=11;intcolumns=23;for(inti=0;i<rows;i++){for(intj=0;j<columns;j++......
  • JAVA 基础(学习img)
    Date:2023-04-2418:57:14尚硅谷Java零基础全套视频教程PS:只记重要的,自己不会的P1课程简介P2课程目录P3JAVA学习路线对我重要的step14IDEA安装使用P4谈谈JAVA吹水P5学习路线2023最新Java学习路线学习路线P6计算机硬件P7常见DOS命令P8不同编程语......
  • Java模拟实现一个基于文本界面的《记账软件》
    /**@author:Noiimplant*@version:1.0*/1.利用java实现简易记账软件根据尚硅谷java教程进行练习2.实现功能记录家庭支出、收入,打印收支明细表使用分级菜单的方式3.代码实现3.1GuliAccount.javapackageGuliAccount;importjava.text.SimpleDateFormat;import......