博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String长度分析?
阅读量:3967 次
发布时间:2019-05-24

本文共 592 字,大约阅读时间需要 1 分钟。

String长度的分析?

String的长度一旦定义便成为不可改变,貌似对其大小进行改变时,实际上是在底层重新开辟了一个空间,然后与之前变量名一样,也就是说现在的String对之前的String进行了替换,并不是本质意义上的改变。String底层是用final修饰的char类型的数组实现的,他是不可变的,他不是简单类型的,但是他有没有大小!他最多有多少字符? 一般来说是用 域count来记录对象字符的数量,因为count的类型是int类型,显然的会认为:String的最大长度是2^31 也就是4G,
实际上并不是这样的,在class文件的规范中, constant_utf8_info表中使用一个16位的无符号整数来记录字符串的长度的,最多能表示 65536个字节,而java class 文件是使用一种变体utf-8格式来存放字符的,null值使用两个字节来表示,因此只剩下 65536- 2 = 65534个字节。也正是变体utf-8的原因,如果字符串中含有中文等非ascii字符,那么双引号中字符的数量会更少(一个中文字符占用三个字节)。如果超出这个数量,在编译的时候编译器会报错。
我认为可以这样来理解,String底层是char类型数组实现的,而的char的可允许最大字符长度为65536,而String中,null需要两个字符,所以String最大字符为:65534

转载地址:http://qgcki.baihongyu.com/

你可能感兴趣的文章
Flutter 插件笔记 | 屏幕适配 flutter_screenutil
查看>>
Flutter UI基础 - 侧拉抽屉菜单
查看>>
Flutter UI基础 - AppBar中标题文字如何居中
查看>>
Flutter UI基础 - Drawer 抽屉视图与自定义header
查看>>
Flutter UI基础 - GridView
查看>>
Flutter UI基础 - 使用InkWell给任意Widget添加点击事件
查看>>
OC WKWebView的使用
查看>>
Flutter UI基础 - Image.asset 图片铺满布局
查看>>
Flutter UI基础 - Row、Column详解
查看>>
Flutter UI基础 - 添加背景图片
查看>>
Flutter UI基础 - 布局之Row/Column/Stack
查看>>
Flutter UI基础 - 层叠布局Stack的使用
查看>>
Go - 解决 go get 超时问题
查看>>
SQL - SQL Server 之遍历数据集合的几种方法
查看>>
SQL - SQL Server 之处理JSON数据
查看>>
SQL - SQL Server 之WHILE循环的坑
查看>>
SQL - SQL Server 性能优化之SQL语句总结
查看>>
Docker - docker-compose常用命令
查看>>
SQL - SQL Server判断字符串中是否有中文
查看>>
SQL - SQL Server查询近7天的连续日期
查看>>