java9为何要将string的底层成功由char[]改成了byte[]?

java9为何要将string的底层成功由char[]改成了byte[]?

本文目录导航:

java9为何要将string的底层成功由char[]改成了byte[]?

Java9为何将String底层成功由char[]改至byte[]?String在JDK9之前,经常使用UTF-16编码并以char数组存储,每个char字符需两个字节存储空间。

每个byte字符只有一个字节,但思考兼容性,一切字符均经常使用双字节存储。

从JDK9起,String会判别字符串能否全为ASCII字符。

若全为ASCII字符,则以拉丁字符集编码,每个字符仅需一字节存储。

若蕴含非ASCII字符,则驳回UTF-16编码,每个字符占用两字节。

以abc为例,全为ASCII字符,因此存储仅需三字节。

而哈A蕴含非ASCII字符,将占用六字节。

在Java程序中,String理论占据最大堆空间,且少量String仅由ASCII字符导致。

JDK9更改后,可节俭少量内存,缩小渣滓回收(GC)次数,优化效率。

综上,Java9将String底层成功由char[]改为byte[],旨在优化内存经常使用与优化功能。

java.lang.String.String(byte[]>java 里String 转成byte【】数组,String a = "5317",转换成的byte【】={5,3,1,7}。谢谢了

String a = 5317;byte[] b = new byte[()];for( int i=0 ; i<() ; i++ ){ b[i] = (byte)((byte)(i)-48);}//这段代码宿愿对你有协助.不过字符串中只能是数字哦.

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

25阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

25阅读