获得徽章 0
#每日一题#
面试题欢迎补充:
1. java中一个String的长度有没有限制?
2. Android中dex方法数为什么限制65536?

为什么方法数不能超过65535?
因为在Dalvik指令集里,调用方法的invoke-kind指令中,method reference index只给了16bits。即由于dalvik bytecode的限制,65536是bytecode的16位限制算出来的,最多能调用2ⁿ(n=16) 65536个方法,所以在生成dex文件的过程中,当方法数超过65536就会报错。


无独有偶,java代码中声明的String字符串最终在class文件中的存储格式是CONSTANT_utf8_info,因此一个字符串最大长度也就是u2的最大值,u2在字节码文件中是2位,所以一个字符串最大长度2ⁿ(n=16) 即65536个。除去2个字节要保存null值所以一个字符串最大长度是65536-2
展开
用户jesen于2022-03-23 14:43发布的图片
1
下一页
个人成就
文章被点赞 81
文章被阅读 16,759
掘力值 555
收藏集
3
关注标签
17
加入于