String 底层是如何实现的?

1、典型回答

String 底层是基于数组实现的,并且数组使用了 final 修饰,不同版本中的数组类型也是不同的:

  • JDK9 之前(不含JDK9) String 类是使用 char[ ](字符数组)实现的
  • 但 JDK9 之后,String 使用的是 byte[ ] (字节数组)实现的

注:1个字符(char) = 2个字节(byte)

String 实现源码如下(JDK21):

2、全面剖析

String底层是基于 char[ ] 数组或 byte[ ] 数组实现的,JDK9 之后,之所以使用 byte[ ] 替换 char[ ] 数组,这是因为,byte类型粒度更细,一个 char 等于 2 个 byte。对于大部分的英文字符和少量中文字符来说,使用 1 个 byte就够了,完全不需要使用 1 个 char 进行存储,所以 JDK9 使用 byte[ ] 之后,对于大部分英文字符来说,同样的内容,其存储空间减少了一半,这就是 JDK9 之后使用 byte[ ] 所带来的优势

3、知识扩展

字符串存储在 JVM 的哪个区域?

String字符串的值是存储在字符串常量池的,而字符串常量池在 《Java 虚拟机规范》中是属于方法区,但在 JVM 默认的虚拟机 Hotspot 中,在 JDK7 的时候就将 字符串常量池 和 静态变量 从方法区的具体实现永久代中移除,放到堆上了。

之后的版本(JDK8 之后)移除了永久代,取而代之的是元空间,它是存储在本地内存(也叫直接内存)中的,但字符串常量池和静态变量依然存储在堆上,并未改动 

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

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

相关文章

浅淡 C++ 与 C++ 入门

我们知道,C语言是结构化和模块化的语言,适用于较小规模的程序。而当解决复杂问题,需要高度抽象和建模时,C语言则不合适,而C正是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库…

铠侠SSD新型接口EDSFFE3 CM7 CD8P系列NVMe2.0 PCIe5.0

固态硬盘几个大厂,如果英特尔、铠侠、三星,陆续推出E3系列SSD,今天就我个人对E3系列的了解,做一个简单介绍。如有不妥,请多多交流 什么是E3? 简单理解就是一种新型的SSD外形尺寸。 E3 系列外形尺寸包含四种…

【教程】APP加固的那些小事

摘要 APP加固是保护APP代码逻辑的重要手段,通过隐藏、混淆、加密等操作提高软件的逆向成本,降低被破解的几率,保障开发者和用户利益。本文将介绍APP加固常见失败原因及解决方法,以及处理安装出现问题的情况和资源文件加固策略选择…

RabbitMQ发布确认高级版

1.前言 在生产环境中由于一些不明原因,导致 RabbitMQ 重启,在 RabbitMQ 重启期间生产者消息投递失败, 导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢&…

Eohours防作弊算工时打卡HR管控系统(中英文版)

适用工程类算工时的企业,目前全世界拥有外劳的建筑企业更适合,他们有很多外国劳工,适合算工时。让工人得到一个公平,透明的工时数据,知道自己这个月能拿多少薪水。企业也能很好控制管理层和工人之间的协作,…

Spring之注入模型

前言 之前我写过一篇关于BeanDefinition的文章,讲述了各个属性的作用,其中有一个属性我没有提到,因为这个属性比较重要,所以这里单独开一篇文章来说明 上一篇博文链接Spring之BeanDefinitionhttps://blog.csdn.net/qq_38257958/article/details/134823169?spm1001.2014.3001…

【论文阅读】

4. Analysis of Large-Scale Multi-Tenant GPU Clusters for DNN Training Workloads 出处:2019 USENIX-TAC 大规模多租户GPU集群对DNN训练工作负载的分析 主要工作:描述了Microsoft中一个多租户GPU集群两个月的工作负载特征,研究影响多租户…

iPhone, Android 手机是如何收到推送通知的?

本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除 iPhone, Android 手机是如何收到推送通知的? 我们的手机或电脑是如何收到推送通知的? 通常我们可以使用消息解决方案 Firebase 来支持通知推送。下图显示了 Fi…

Unity URP 如何写基础的曲面细分着色器

左边是默认Cube在网格模式下经过曲面细分的结果,右边是原状态。 曲面细分着色器在顶点着色器、几何着色器之后,像素着色器之前。 它的作用时根据配置信息生成额外的顶点以切割原本的面片。 关于这部分有一个详细的英文教程,感兴趣可以看一…

HCIP —— BGP 的社团属性

目录 BGP 的社团属性 1.0X00000000 --- internet 2.0XFFFFFF02 --- no - advertise 3.0XFFFFFF01 --- no - export 4.0XFFFFFF03 --- no-export-subconfed 配置: 第一步:使用路由策略执行对流量打上社团属性 第二步:在对等体通告路由之…

【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列二:Fast R-CNN图文详解

RCNN算法详解:【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列一:R-CNN图文详解 学习视频:Faster RCNN理论合集 Fast RCNN 概念辨析 1. RoI 在Fast R-CNN中,RoI(Region of Interest,感兴…

【数据可视化】动手用matplotlib绘制关联规则网络图

下载文中数据、代码、绘图结果 文章目录 关于数据绘图函数完整可运行的代码运行结果 关于数据 如果想知道本文的关联规则数据是怎么来的,请阅读这篇文章 绘图函数 Python中似乎没有很方便的绘制网络图的函数。 下面是本人自行实现的绘图函数,如果想…

零、自然语言处理开篇

目录 0、NLP任务的基础——符号向量化 0.0 词袋模型 0.1 查表/One-hot编码 0.2 词嵌入模型/预训练模型 0.2.0 Word2Vec (0)CBOW (1)Skip-gram 0.2.1 GloVe 0.2.2 WordPiece 0.2.3 BERT 0.2.4 ERNIE NLP学习笔记系列&am…

OKHttpRetrofit

完成一个get请求 1.导入依赖 implementation("com.squareup.okhttp3:okhttp:3.14.")2.开启viewBinding android.buildFeatures.viewBinding true 3.加网络权限 和 http明文请求允许配置文件 <?xml version"1.0" encoding"utf-8"?> &l…

利用国产库libhv动手写一个web_server界面(一)

目录 一.实现要求 流程图 测试libhv中的http服务 1.启动http服务端 2.启动http客户端 3.网址访问 4.状态图 5.时序图 结果展示 1.基本的登录界面 2.简易的配置ip及其端口的界面 3.设置成功后返回 这是一个关于webserver HTTP SERVER http server 模块的制作 一.实…

力扣串题:验证回文串2

整体思路&#xff1a;先找到可能存在问题的点&#xff0c;然后判断&#xff0c;如果一切正常则左指针会来到字符串中部 bool isValidPalindrome(char *s, int i, int j) {while (i < j) {if (s[i] ! s[j]) {return false;}i;j--;}return true; }bool validPalindrome(char …

11.Java---语法总结之一个小项目

图书管理系统 Java学习了很久了,今天将运用之前学习的所有东西整理做个小小的小项目. 1.首先是各种包和操作方法建好 2.然后是项目的大框架搭好 3.然后就开始实现各个部分了 看看最后的运行结果吧! 管理员测试 1.登录&显示图书的运行结果 2.查找&新增图书的运行结…

2024年视频号带货蓝海项目真的可做吗?

在数字经济的浪潮下&#xff0c;视频号带货作为一种新兴的电商模式&#xff0c;近年来备受瞩目。随着5G技术的普及和移动设备的更新换代&#xff0c;视频平台用户规模持续增长&#xff0c;为视频号带货提供了广阔的舞台。然而&#xff0c;面对2024年这个未来节点&#xff0c;我…

9个免费游戏后端平台

在这篇文章中&#xff0c;您将看到 九个免费的游戏服务平台提供商&#xff0c;这可以帮助您开始在线多人游戏&#xff0c;而无需预先投入大量资金。 每个提供商都有非常独特的功能&#xff0c;因此成本应该只是决定时要考虑的方面之一。 我还从低预算项目的角度对免费提供商进…

《JAVA与模式》之原型模式

系列文章目录 文章目录 系列文章目录前言一、原型模式的结构二、简单形式的原型模式三、登记形式的原型模式四、克隆满足的条件五、浅克隆和深克隆前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用…