采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
如果字符串中是汉字,那么长度是 65535/3,上一节讲在 class 文件中中文字符大部分占两个字节,这里为什么不是除以 2
前一节讲的是内存,内存里面存的是Utf16编码,汉字多数占两个字节,也有4个字节的,如果你在控制台打印出来还会多两个字节的字节序标志;字节码里面存的是mutf8编码,汉字一般占3个字节。主要编码不同
多谢老师
我是彻底晕了
在java7-8中String以char[]数组存字符串,char是2个字节。String最大有65534个字节数,全都用来存拉丁字母,是不是最多只能存65534/2个字母,也就是最大字符数是65534/2?那存汉字呢?
回复问汉字存储的同学,视频当中有详细讲解,受限于较多的因素,例如字节码存储的限制,汉字以 MUTF-8 编码的字节存储于字节码当中等等
当然,这只是其中的一种情况,详细的分析还是看视频吧。不知道同学对视频当中那部分内容有疑问?
好的哈。但还没深刻到理解java8中以char[]存入字符,对数量的限制??如果在java9,改成byte[]存储,确实可以存最多65534个字母
java9只是为了在存ascii码中的字符时节省内存,因为ascii码的字符一个字节就够了,而char占两个字节,在存中文时没什么区别。
存中文是的。我这样理解对吗?Java8的字符串是不是存拉丁字母最多是65534/2=32767,因为最多字节数是65534,String是用char数组存储,而char占2个字节,所以是65534/2。
登录后可查看更多问答,登录/注册
改变视野和思维 深度与广度兼备的 Android 进阶面试指导课程
1.1k 1
1.2k 16
918 10
1.3k 10
1.2k 10