为什么L选择类型签名中引用的前缀?是否L代表某种东西,如B代表byte,I代表int什么?或者它被选中是因为C已经分配给了char?
例如,
System.out.println( new String[0].getClass().getName() );
Run Code Online (Sandbox Code Playgroud)
产量:
[Ljava.lang.String;
Run Code Online (Sandbox Code Playgroud)
我已经知道Java规范和Class.getName方法 javadoc 中的解释.
特定于类型的Java字节码指令具有单字符前缀以指定该指令所涉及的类型。
在每种情况下,前缀选择都是有意义的,它由该类型的第一个字母组成(布尔型除外,布尔型没有指令前缀)。但是,对象引用前缀似乎不合逻辑,因为o和和r(两个第一字母)都是免费的。相反,对象引用指令a用作其前缀。
对象引用字节码指令为什么前缀a,而不是貌似更合适o还是r?