Javap Asciz Strings

Jiv*_*ngs 5 java bytecode class javap

javap关于常量池命令生成的输出的小问题.当javap打印池它定义字符串常量为Asciz字符串,我的理解方式null终止ASCII:

const #20 = Asciz       hello world;
Run Code Online (Sandbox Code Playgroud)

这意味着字符串的长度是未知的,并且要解析您将读取每个字节,直到您遇到null.

但是,常量池字符串常量的长度由字符串前面的两个字节定义,并且没有null附加.(常量池规范).

是否javap将字符串定义为Asciz错误或Asciz具有我不知道的其他含义?

axt*_*avt 4

请参阅错误#6868539。它已在 OpenJDK7 中修复,现在改为javap打印Utf8