首页 » PHP教程 » phpstring长度限制技巧_面试题01String是否有长度限制

phpstring长度限制技巧_面试题01String是否有长度限制

访客 2024-11-24 0

扫一扫用手机浏览

文章目录 [+]

检测字符串长度工具(http://tool.huixiang360.com/str/length.php)

2、缘故原由剖析

1、通过源码剖析String该当是由char类型的数组构成

phpstring长度限制技巧_面试题01String是否有长度限制

2、如果是char类型的数组那么没有其它限定的情形下String的长度该当为value字符串数组的长度

phpstring长度限制技巧_面试题01String是否有长度限制
(图片来自网络侵删)

3、value字符串数组的长度为int类型,那么根据int类型的包装类Integer可以得到如下信息,最大值为2^31-1 但是根据场景仿照结果,显然长度根本没有到2^31-1 就报错了!


4、这个时候就必须推出JVM,JVM编译时会将字符串转换为字面量,在编译时将字面量放入常量池中,这时候JVM对字符串会做一些限定

参考Java虚拟机规则https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.10

所有的常量池的通用规则如下

字符串的规则如下(这里定义的 u2 string_index 表示的是常量池的有效索引,其类型是CONSTANT_Utf8_info 构造体表示的)

那么什么是CONSTANT_Utf8_info规则

在class文件中u2表示的是无符号数占2个字节单位,我们知道1个字节占8位,2个字节便是16位 ,那么2个字节能表示的范围便是2^16- 1 = 65535(定义一组私有数据类型来表示 Class 文件的内容,它们包括 u1,u2 和 u4,分别代表了1、2 和 4 个字节的无符号数 每个 Class 文件都是由 8 字节为单位的字节流组成,所有的 16 位、32 位和 64 位长度的数 据将被布局成 2 个、4 个和 8 个 8 字节单位来表示)

5、综上可以确定字符串的长度是2^16-1了吗?不不不

根据官方阐明,便是说数组的有效范围是【0-65535】,但是虚拟机还须要一个字节的指令作为结束符,所有真正有效范围是【0-65534】

把稳点:这里的范围仅限编译期间,如果你是运行时拼接的字符串是可以超出这个范围的

// 也便是说如下情形,编译不报错,运行时拼接字符串是可以超过这个范围public class StringTest { public static void main(String[] args) { String result = ""; for (int i = 0; i <1000_0000_00 ; i++) { result+=i; } }}3、测试

准备字符为65534的字符串,验证通过

4、结论

通过对字符串的源码剖析可知,字符串由字符数据char[ ]构成,由于数组的长度为int类型,而int的包装类是Integer,那么Integer最大的表示值该当为2^31-1, 但是通过翻阅java虚拟机手册可知,class文件格式的定义以及常量池中对String类型的构造体定义我们可以知道对付索引定义了u2,便是无符号占2个字节,2个字节可以表示的最大范围是2^16 -1 = 65535,但虚拟机须要末了一位为结束指令,以是这个范围便是65534。

相关文章

云挖矿,新时代的数字黄金开采之旅

随着互联网技术的飞速发展,数字货币市场日益繁荣。在这个背景下,云挖矿作为一种新兴的数字货币开采方式,逐渐进入人们的视野。云挖矿究竟...

PHP教程 2025-01-01 阅读0 评论0

云同步,新时代数据共享与协作的利器

随着互联网技术的飞速发展,数据已成为现代社会的重要资源。如何高效、安全地实现数据共享与协作,成为企业和个人关注的焦点。云同步作为一...

PHP教程 2025-01-01 阅读0 评论0

云备份,守护数据安全的守护神

随着互联网技术的飞速发展,数据已经成为企业、个人乃至国家的重要战略资源。数据安全问题也日益凸显,如何确保数据安全、可靠地存储和备份...

PHP教程 2025-01-01 阅读0 评论0

全景图制作攻略,开启视觉新体验

随着科技的不断发展,全景图已经成为了展示空间、传播信息的重要手段。全景图以其独特的视觉效果,能够为人们带来身临其境的体验。如何制作...

PHP教程 2025-01-01 阅读0 评论0

全景摄影的魅力,捕捉世界的无限可能

随着科技的不断发展,摄影技术也在不断创新。全景摄影作为一种独特的摄影方式,凭借其独特的视角和广阔的视野,逐渐受到越来越多摄影爱好者...

PHP教程 2025-01-01 阅读0 评论0