Taken from Wikipedia's entry on Java bytecode http://en.wikipedia.org/wiki/Java_bytecode
在每种情况下,前缀选择都是有意义的,由类型的第一个字母组成(布尔值除外,它没有指令前缀)。然而,对象引用前缀似乎不合逻辑,因为两者o and r(两个第一个字母)是免费的。相反,对象引用指令使用a作为他们的前缀。
为什么对象引用字节码指令前缀为a,而不是看似更合适的o or r?
那个表有问题。没有字节码指令处理boolean因此没有以“z”开头的指令名称。 “z”可能来自类型签名,其中Z代表boolean但这与类型签名不同J代表long and L开始一个类名。所以那里没有一致性。对于指令,“a”可能代表地址,如下所示astore指令也能够将返回地址存储到局部变量中。也许,在早些时候,更多这样的指令能够处理除对象之外的地址,并且后来受到了限制。