Java方法体的字节数不能超过65535字节的原因是什么,还有方法参数不能超过255个是因为什么?

Java方法体的字节数不能超过65535字节的原因是什么,还有方法参数不能超过255个是因为什么?

回首忆惘然
浏览 734回答 2
2回答

繁星淼淼

设想下你是java(确切地说,是jvm的设计者),你会遇到很多这样的选择:将程序做得很活,比如说方法体可以无限长度,或者方法参数可以无限多。这种“很活”的东西如果要设计出来,那么也不是不可以,比如说,需要一个可以动态分配的存储机制,比如说类似链表那样可以无限长度的列表,比如说需要在每个方法的元数据上安排额外的标签来表示它有多少参数,或者多少长度。然而这种设计,是以增加复杂度(jvm的复杂度,所有以java字节码为目标的语言的编译器的复杂度,等等)和时间开销为代价的。可是实际上,从工程的角度看,这种需求存在,但是微乎其微地存在。结果就是,1000个人被1个人拖累。那么显然java的设计者是为了这一个人呢,还是为了其他人呢,这就是一个值得思考的问题。当然了,我们也有自作聪明的时候,比如说,在1970年代或者更早,我们用2个数字表示年份,比如1998年叫做98年。结果呢,结果我们遇到了所谓“千年虫”问题,,我们不得不重新设计各种软件。所以说,合理性和不合理性是相对的,仅此而已。

拉莫斯之舞

这个分为几点回答:Unicode本身只是一个标准,不是具体实现,并没有限定字节数。目前用于实用的 Unicode 版本对应于 UCS-2,使用16位的编码空间,因此最大能表示65535个字符。Unicode是发展的,6万个确实不够,事实上现在的Unicode已经支持超过10万个字符(第10万个于2005年被采纳,为马来亚拉姆语。当前的Unicode版本为6.3,2013年9月30日制定。Java中使用的仍是UCS-2。
打开App,查看更多内容
随时随地看视频慕课网APP