in documentation i read, that:
A variables name can be any legal identifier — an **unlimited-length** sequence of Unicode letters and digits
so, i created this class:
class Test{
public static void main(String args[])
{
int i=10;
}}
where i - its not i, its variable with name length - 3000000 chars.
the size .java file ~3M.
I try compile this file:
javac Test.java
In result i have Test.class with size Test.class 4bayts.
And now my questions:
Its really try, that name unlimited-length??
How compiler translate my variable name with length 3000000 chars, that in result i have so small .class file?
解决方案
iiiiiii.. is a local variable, i.e. it cannot be accessed from other classes. Therefore, its name does not matter; the compiler does not need to store it. Additionally, the compiler may look at your code and determine that {int i = 10;} is not actually doing anything and can be replaced by {} since both versions produce the same program output (none).