java方法参数_为什么Java方法参数不能超过255个?

其实根本原因是Java虚拟机对class文件字节码的格式要求导致的;

我们知道Java代码最终会被编译成class文件,而每个class文件的格式是有规则的;

比如:

1.class文件是二进制形式,是紧凑的,不想xml那样各个属性见有明显的分隔符

2.每个class文件的开头都是4个字节的魔数(Magic Number),它的唯一作用是确定这个文件是否为一个能被虚拟机接受的Class文件。其实很多文件存储标准中都使用魔数来进行身份识别,比如图片格式的gif或者jpeg文件头中都存在有魔数。使用魔数而不是扩展名来进行识别主要是基于安全方面的考虑,因为文件扩展名是可以随意改动的。

3.紧接着魔数,后面的4个字节存储的是Class文件的版本号,第5和第6个字节是次版本号(Minor Version),第7和第8个字节是主版本号(Major Version).高版本的JDK能向下兼容以前的Class文件,但不能运行以后版本的Class文件,即使文件格式并未发生任何变化,虚拟机也必须拒绝执行超过其版本号的Class文件。

4.紧接着主次版本号的是常量池入口。常量池的常亮数目是不固定的,所以常量池的入口放置了两个字节的数据代表常量池容量计数值.

5.其后是访问标志

6.其后是类索引、父类索引、接口索引集合

7.字段表集合

8.方法表集合

对于方法的参数为什么不能超过255个,重点在方法表集合当中;

attribute是什么?可以是int long 也可以是Class对象,就是方法的参数,而attributes_count是一个一字节的数据,我们知道1个字节可以表示从1到255,所以方法参数不能超过255个

9.属性表集合

如果你看到这,恭喜你被误导了,正确的答案在下面.......

汪先生:你知道Java方法能定义多少个参数吗?​zhuanlan.zhihu.com

你可能感兴趣的:(java方法参数)