Search code examples
javafinal

Why Final variable doesn't require initialization in main method in java?


When I am just trying to do some program in Java.I try to use final variable,I know that final variable must be initialized at the time of declaration, but inside the main method it accepts the final variable with out initialization. I don't know what's the reason.Can any one tell me the reason.

Thank you

code:

class name
{
     final int b; //here shows error
     public static void main(String args[])
    {
        final int a; // here no error... why?
        System.out.println("hai");
    }
}

Solution

  • For instance variable level

    • A final variable can be initialized only once.

    • A final variable at class level must be initialized before the end of the constructor.

    For local (method) level

    • A final variable at method level can be initialized only once.
    • It must be initialized before it is used

    So basically if you don't use a local final variable you can also skip it's initialization.

    If the variable is at instance level you have to initialize it in the definition or in the costructor body.

    In your code you have an instance variable final int b that is never initialized so you have an error.

    You have also a local variable final int a that is never used. So you haven't an error for that variable.