【Java基础知识(1)】对象在内存中的存储

Java对象是如何在内存中存储的?

在Java中,所有的对象被动态地分配在堆中。这和C++不同,C++允许对象被存储在堆或者栈中。

参考Oracle官方文档:官方文档说明

在Java中创建字符串对象的2种方法:

1、 使用String关键字;
2、 使用new关键字。

(1) 使用String关键字:
使用双引号代表字符串。举例:

String str1 = "GFG";
String str2 = "GFG";

该操作在内存中的表示:

在这里插入图片描述

每当一个String表示被创建,JVM会首先检查该字符串是否在字符串常量池(String constant pool)中存在。若已存在,则返回一个对该实例的引用;若不存在,则在常量池中创建一个新的字符串实例。因此在上述例子中,事实上只有1个对象被创建。

(2) 使用new关键字:

举例:

String str1 = new String("GFG");
String str2 = new String("GFG");

上述操作在内存中的表示:

在这里插入图片描述
每当一个字符串对象被创建,JVM会将其在堆内存中创建。在上述实例中,JVM不会检查该字符串是否已经存在。无论如何,每个字符串对象都会获得独自的内存空间。

如下程序会报错:

class Test
{void show(){System.out.println("Test::show() called");}
}public class Main()
{public static void main(String[] args){Test t;t.show();}
}

要消除该报错,只需将主函数中的

Test t;

修改为

Test t = new Test();

即可。

参考:

GeeksforGeeks.

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

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

相关文章

化学空间可视化(chemical space visualization)开源软件ChemPlot的安装及使用

文章目录 前言一、ChemPlot是什么?二、conda环境安装ChemPlot1. 创建conda环境2. 安装chemplot及需要的包3. 检验安装 三、使用步骤1. 化合物数据库可视化使用方法BBBP数据库的t-SNE降维后可视化:BBBP数据库的PCA降维后可视化:BBBP数据库的UM…

Photoshop 2023(Ps)下载安装及详细安装教程

Photoshop(Ps)的介绍 Adobe Photoshop,简称“PS”,是由AdobeSystems开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑和创造工作。PS有很多功能,在图像、…

如何用 Moodle 和 ONLYOFFICE 创建在线学习平台

在教学过程中使用现代在线学习软件,已不再是什么稀奇事。在世界各地,越来越多的教师和学生都在使用现代技术,应用新的学习场景,包括学生在传统课堂之外更积极的参与、更密切的互动。 Moodle 支持各类学校和大学充分利用在线教育过…

手持三防平板丨国产化加固平板丨国产三防平板发展的意义是什么?

随着现代科技的快速发展,平板电脑在我们的生活中扮演着越来越重要的角色。然而,传统的平板电脑只能在普通的环境中使用,而无法在恶劣的环境中使用,例如在高海拔、高温、高湿度、沙漠等环境中,传统平板电脑往往会出现故…

MacBook的nginx出现13: Permission denied 的问题分析和解决办法

同样的项目代码,电脑从Windows更换到了MacBook,发现网站的样式都没有了,直接访问CSS文件 http://crm.ms-test.cc/toolstatic/css/bootstrap.min.css 发现无法访问。查看Nginx错误日志: 说明是nginx没有权限访问这个CSS文件&#…

163邮箱发邮件

1、Jenkins安装Email Extension Plugin 2、网易邮箱里获取授权码:qa_jenkins_robot@163.com 开启POP3/SMTP 我已经配置过了,所以这里会有一个使用设备 3、配置Jenkins邮箱通知 Manage Jnekins-Configuration System Jenkins Location: Extended E-mail Notification: …

机器人十大前沿技术(2023-2024年)

2023-2024年机器人十大前沿技术 1. 具身智能与垂直大模型 具身智能是指拥有自主感知、交互和行动能力的智能体,能够与环境进行实时互动,从而实现对环境的理解和适应。 “大模型”是指在深度学习和人工智能领域中,使用大量参数和数据进行训…

爬虫知识--01

爬虫介绍 # 爬虫的概念: 通过编程技术(python:request,selenium),获取互联网中的数据(app,小程序,网站),数据清洗(xpaht,lxml)后存到库中(mysql,redis,文件,excel&#x…

Elasticsearch:什么是搜索引擎?

搜索引擎定义 搜索引擎是一种软件程序或系统,旨在帮助用户查找存储在互联网或特定数据库中的信息。 搜索引擎的工作原理是对各种来源的内容进行索引和编目,然后根据用户的搜索查询向用户提供相关结果列表。 搜索引擎对于希望快速有效地查找特定信息的用…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-19-处理鼠标拖拽-中篇

1.简介 上一篇中,主要是介绍了拖拽的各种方法的理论知识以及实践,今天宏哥讲解和分享一下划取字段操作。例如:需要在一堆log字符中随机划取一段文字,然后右键选择摘取功能。 2.划取字段操作 划取字段操作就是在一段文字中随机选…

java面试题之redis篇

1.redis 中的数据类型有哪些 随着 Redis 版本的更新,后面又支持了四种数据类型: BitMap(2.2 版新增)、HyperLogLog(2.8 版新增)、GEO(3.2 版新增)、Stream(5.0 版新增&am…

【Azure 架构师学习笔记】- Azure Databricks (7) --Unity Catalog(UC) 基本概念和组件

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (6) - 配置Unity Catalog 前言 在以前的Databricks中,主要由Workspace和集群、SQL Warehouse组成, 这两年Databricks公…