关于javap命令生成的关于常量池的输出的小问题.
当javap打印池时,它将字符串常量定义为Asciz字符串,我理解这意味着null终止Ascii:
const #20 = Asciz hello world;
这意味着字符串的长度是未知的,并且要解析,您将读取每个字节,直到遇到null.
但是,常量池字符串常量的长度由字符串前面的两个字节定义,并且不会附加空值. (Constant pool specification).
javap是否将字符串定义为Asciz不正确,或者Asciz是否有另一种我不知道的含义?
最佳答案
见bug #6868539.它已在OpenJDK7中修复,现在javap打印Utf8.
原文链接:https://www.f2er.com/java/437949.html