javavariables

Java variable name length


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 - 3.000.000 chars, the size .java file ~3M.

I try compile this file:

javac Test.java

In result I have Test.class with size Test.class 4 bytes.

And now my questions:

  1. Its really try, that name unlimited-length??
  2. How compiler translate my variable name with length 3000000 chars, that in result I have so small .class file?

Solution

  • 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).