Java中变量名的长度限制

Java中变量名的长度限制,java,compiler-construction,Java,Compiler Construction,可能重复: 我在读java文档,它说“变量的名称可以是任何合法的标识符——Unicode字母和数字的无限长序列…在C++中,变量名的长度大约是255个字符,这取决于编译器,java是如何处理的,编译器是否在X个字符之后截断变量名,如果这是真的,那么给定一个JavaLang.Stand有一个字段,x?< /p> 是什么? private final int count; 要指定其中的字符数,最大标识符长度不得超过 Integer.MAX_VALUE任何头脑正常的人都不应该在限制范围内。你达到了

可能重复:


我在读java文档,它说“变量的名称可以是任何合法的标识符——Unicode字母和数字的无限长序列…在C++中,变量名的长度大约是255个字符,这取决于编译器,java是如何处理的,编译器是否在X个字符之后截断变量名,如果这是真的,那么给定一个JavaLang.Stand有一个字段

,x?< /p> 是什么?
private final int count;
要指定其中的字符数,最大标识符长度不得超过


Integer.MAX_VALUE

任何头脑正常的人都不应该在限制范围内。你达到了一个无法达到目的的地步。你想选择明确你意图的名称,但这并不意味着变量名称应该与“Ulysses”相匹敌长度。限制更多地与良好的品味和可读性有关。

根据(第4.11节):

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


这也适用于局部变量,因为变量名指向常量信息值。

如果文档告诉您字符串可以是任意长度,为什么您希望编译器截断字符串?@KerrekSB我只是不明白它怎么可以是无限的如果变量名本身就是15Gb,会怎么样Java编译器是否提供了任意长度的字符串类?
BigString
等等……尽管即使是基本字符串也应该能够增长到与可寻址机器内存相同的大小。@MikeG:如果变量名需要15gb来存储,那么我为您的键盘感到抱歉(更不用说你的手指和理智了)。我知道这与问题无关,但担心变量名长度的限制可能意味着变量名(只是一点点)太长了。这不是我编写编译器的重点,我需要知道这些限制是如何相关的?但这不是flimit或可变长度-编译器可以处理更长的名称(使用java 11测试70000)