java中堆和栈有什么区别?

堆和栈都是Java用来在RAM中存放数据的地方。

一、堆

(1)Java的堆是一个运行时数据区,类的对象从堆中分配空间。这些对象通过new等指令建立,通过垃圾回收器来销毁。

(2)堆的优势是可以动态地分配内存空间,需要多少内存空间不必事先告诉编译器,因为它是在运行时动态分配的。但缺点是,由于需要在运行时动态分配内存,所以存取速度较慢。

二、栈

(1)栈中主要存放一些基本数据类型的变量(byte,short,int,long,float,double,boolean,char)和对象的引用。

(2)栈的优势是,存取速度比堆快,栈数据可以共享。但缺点是,存放在栈中的数据占用多少内存空间需要在编译时确定下来,缺乏灵活性。

三、举例说明栈数据可以共享

String 可以用以下两种方式来创建:

第一种使用new来创建的对象,它存放在堆中。每调用一次就创建一个新的对象。

第二种是先在栈中创建对象的引用str2,然后查找栈中有没有存放“abc”,如果没有,则将“abc”存放进栈,并将str2指向“abc”,如果已经有“abc”, 则直接将str2指向“abc”。

下面用代码说明上面的理论:

输出结果为:false

输出结果为:true

因此,用第二种方式创建多个“abc”字符串,在内存中其实只存在一个对象而已, 这种写法有利于节省内存空间。

同时还可以提高程序的运行速度,因为JVM会自动根据栈中数据的实际情况来决定是否创建新对象。

 为了让学习变得轻松、高效,今天给大家免费分享一套Java教学资源。帮助大家在成为Java架构师的道路上披荆斩棘。需要资料的欢迎加入学习交流群:9285,05736

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cass坡度土方计算案例_【九天教您南方cass 9.1】 12 道路断面土方计算

同学们大家好,欢迎收看由老王测量上班记出品的cass9.1视频课程我是本节课主讲老师九天。我们讲课的教程附件也是共享的,请注意索取 在测量空间中。【点击索取cass教程】5元立得 (给客服说暗号:“老王测量上班记”) 即可5元获得教程全系列&…

台式机dp接口_精品导购:你想要的商务台式机 都在这里了!

不少公司都会为员工配备办公电脑,而公司在采购这些电脑时,兴许可能对电脑性能、存储容量等都没有研究过,只是图了价格便宜便批量采购,这就导致电脑在使用一段时间后,会频繁出现死机、运行卡顿和硬盘容量不够等情况的发…

roc曲线怎么绘制_ROC曲线和PR曲线

在机器学习中,ROC曲线被广泛应用于二分类问题中来评估分类器的可信度,当处理一些高度不均衡的数据集时,PR曲线能表现出更多的信息。在二分类问题中,分类器将一个实例的分类标记为正例还是负例,这可以用一个混淆矩阵来表…

火狐受信任站点设置_火狐浏览器怎么添加信任站点,谷歌浏览器设置信任站点...

我们总是喜欢在win7系统中使用浏览器来浏览一些网页,有时候需要添加信任网址,防止每次打开的时候都会跳出提示,而有的网页需要添加受限制,防止浏览网页弹出某些广告网站,可是最近有win7专业版系统用户却发现在添加信任…

这是2019年适合Java程序员读的10本书

除了为经验丰富的Java开发人员(他们更倾向于学习架构方面的知识,关于云、微服务、Java 9和Spring 5开发等)推荐了一些书籍,同时也为那些初级程序员或经验相对缺乏的Java开发者推荐一些适合在2019年学习的书,下面还是来…

华三交换机路由器图标_弱电箱网口不够用,用华三8口千兆交换机搞定

如题,公司租的办公室刚装修完,安了弱电箱,无奈联通只给了一个2口的光猫,如何不自己花钱买光猫的前提下,分配三间屋子的五个有线成了问题。之前考虑过直接路由器内置在弱电箱里,不过电箱金属盒有屏蔽和弱电箱…

i2c hid 触摸板不能用_零基础学硬件(6):I2C总线的用处

I2C总线的用处,什么时候需要用I2C总线这东西太简单了,我还有点不想说..不就是一个start一个STOP一个ACK嘛,,简单得不能在简单.他可以根据器件地址进行通信..当年在学校时看了很多这资料..什么时候需要用I2C总线,你的器件是IIC的器件,我就得用IIC总线..什…

problem a: 简单的整数排序_python里的排序

本篇文章主要讲:自定义规则排序 多字段排序开讲之前,先讲一些简单sorted()或者sort(),两者返回值不同!例如:sorted([5, 2, 3, 1, 4]) # 输出:[1, 2, 3, 4, 5]另一个呢a [5, 2, 3, 1, 4] a.sort() a # 输出…

python prettytable表格列数太多_excel列数太多了怎么办

excel列数太多了怎么办?列数太多我们需要巧用组合键,通过组合键达到比隐藏更实用的效果。下面将用excel2007版本为例,效果图见下。方法:1、如果列太多,我们就细分为多少列分布做,具体多少列为一组&#xff…

c++ 多态 运行时多态和编译时多态_C++核心编程 第十一节 多态

前言:多态是C面向对象三大特性之一。多态,指的是一个类实例的相同方法在不同情形有不同表现形式。具有不同内部结构的对象可以共享外部接口。C多态就是用一个更通用的基类指针指向不同的子类实例,为了能调用正确的方法,我们需要用…

oracle sql 子游标_Oracle 父子游标

游标从Oracle数据库管理员的角度上说,游标是对存储在库缓存中的可执行对象的统称。SQL语句是存储在库缓存中的,它是游标。除了它之外,还有Oracle的存储过程也是存储在库缓存中的可执行对象,从Oracle DBA的角度上说,它也…

多线程操作时操作系统时间片_从零开始自制操作系统(15):内核多线程

1.多线程原理:(1)概述:多线程是指CPU可以在一段时间中并行执行多个程序,比如我们可以一边听音乐、一边写代码(这两个程序可以“同时进行”,我们称之为多进程,而多进程实现的本质就是…

听说java又过气了?看我运用大数据分析2019年java发展趋势!

近些年的技术圈,单以计算机语言界来说,稳坐第一把太师椅的 Java “或将被取代”、迎接转折点、Java 项目工程师风光不再等言论不绝于耳。在焦虑的大环境下,所有人好像都看起来很焦虑不安。 针对这类“唱衰论”,也不难理解。不仅&…

打开git界面_使用 Gitea 快速搭建私有 Git 版本控制服务

1. 前言分布式版本控制工具 Git 已经是现代软件源代码版本控制首选方案之一。公有 Git 服务提供商 国外知名如 GitHub 国内网络延迟高,Gitlab 涉嫌对中国的歧视不推荐。国内有 Gitee、Coding 生态还不错。但是一般公司的源代码除非开源项目是不会放在公有 Git 服务上的。所以我…

dev项目属性按钮是灰色_Spring Boot 中的项目属性配置

阅读本文约需要5分钟大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。上次老师跟大家分享了Spring Boot 如何使用 SLF4J 进行日志记录,今天跟大家分享一下 Spring Boot 中的项…

diskgenius扩容c盘重启电脑卡住_电脑开机显示:reboot and select proper boot device怎么办?...

今天就碰到有一个知友问,自己电脑开机就提示:reboot and select proper boot device,整个人都懵了,不知道怎么办?其实对于电脑出现问题,大家不要着急,坚哥就来为大家分析下原因以及试着去解决。第一种原因…

2019年1月份GitHub上最热门的Java开源项目

相信大多数程序猿们都回归工作岗位啦,不知道是否调整好心态了呢?1月份GitHub上最热门的Java开源项目新鲜出炉,还是一起来看看都有哪些项目上榜吧: 1JavaGuide https://github.com/Snailclimb/JavaGuide Star 22668 【Java学习面试…

大并发下程序出错_Python并发编程理论篇

前言其实关于Python的并发编程是比较难写的一章,因为涉及到的知识很复杂并且理论偏多,所以在这里我尽量的用一些非常简明的语言来尽可能的将它描述清楚,在学习之前首先要记住一个点: 并发编程永远的宗旨就是提高程序的运行效率&am…

2020 idea 查看内存消耗_idea内存如何设置

更具自己硬件环境做出相应的调整.在这里简单说一下这些参数作用以及参考更改参数-Xms768m-Xmx768m-XX:MaxPermSize250m-XX:ReservedCodeCacheSize64m-server-XX:NewSize128m-XX:UseParNewGC-XX:ParallelGCThreads8-XX:UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction60-…

月薪30K程序员花了一个小时,用c++做出经典扫雷游戏 !

上次发过一个俄罗斯方块的游戏源码,由于是通过Easy X实现的,但是很多和我一样的新手,一开始不知道Easy X是什么,到时源码拿过去之后,运行报错,我这次发的扫雷, 也是通过Easy X实现,…