Java中变量名的长度限制

Mik*_*e G 3 java compiler-construction

可能重复:
Java中变量或方法的最大名称长度

我读Java文档,它说"一个变量名可以是任何合法的标识符 - Unicode编码的字母和数字的无限长序列..."C++中的变量名长度取决于编译器周围255个字符,所以这是怎么在java中处理的编译器会在x个字符后截断变量名,如果这是真的那么x是什么?

pru*_*nge 6

根据类文件格式规范(4.10节下的最后一点):

字段和方法名称,字段和方法描述符以及其他常量字符串值的长度由CONSTANT_Utf8_info结构(第4.4.7节)的16位无符号长度项限制为65535个字符.请注意,限制是编码中的字节数,而不是编码字符数.UTF-8使用两个或三个字节对某些字符进行编码.因此,包含多字节字符的字符串受到进一步限制.

这也适用于局部变量,因为LocalVariableTable指向变量名称的CONSTANT_Utf8_info值.

  • 但这不是 flimit 或可变长度 - 编译器可以处理更长的名称(使用 java 11 测试了 70000) (2认同)