GeeksforGeeks

Předpoklad : statické proměnné, klíčové slovo final

Statická proměnná: Když se hodnota proměnné nemění, pak není dobré volit proměnnou instance. V té době můžeme k této proměnné přidat modifikátor static. Kdykoli deklarujeme proměnnou jako statickou, pak se na úrovni třídy vytvoří jediná proměnná, která je sdílena s objekty. Jakákoli změna v této statické proměnné se promítne do operací s ostatními objekty. Pokud nebudeme statickou proměnnou inicializovat, pak ve výchozím nastavení poskytne JVM pro statickou proměnnou výchozí hodnotu.

Pokud ale deklarujeme statickou proměnnou s modifikátorem final, pak bychom měli dbát na následující konvence:

  • Deklarování proměnných pouze jako statických může vést ke změně jejich hodnot jednou nebo více instancemi třídy, ve které je deklarována.
  • Deklarování jako statických final pomůže vytvořit KONSTANCI. Existuje pouze jedna kopie proměnné, kterou nelze znovu inicializovat.

Důležité body o statické proměnné final:

  1. Inicializace proměnné Povinná : Pokud je statická proměnná deklarována jako final, pak musíme provést inicializaci explicitně, ať už ji používáme nebo ne, a JVM nebude poskytovat žádnou výchozí hodnotu pro statickou proměnnou final.

    class Test {
    final static int x;
    public static void main(String args)
    {
    }
    }

    
    

    
    

    Výstup:

    error: variable x not initialized in the default constructor
  2. Inicializace před načtením třídy : U finální statické proměnné bychom měli povinně provést inicializaci před dokončením načítání třídy. Finální statickou proměnnou můžeme inicializovat v okamžiku deklarace.

    class Test {
    final static int x = 10;
    public static void main(String args)
    {
    System.out.println(x);
    }
    }

    
    

    
    

    Výstup:

    10
  3. Inicializace uvnitř statického bloku : Můžeme také inicializovat finální statickou proměnnou uvnitř statického bloku, protože bychom měli inicializovat finální statickou proměnnou před třídou a víme, že statický blok se provádí před metodou main().

    class Test {
    final static int x;
    static
    {
    x = 10;
    }
    public static void main(String args)
    {
    System.out.println(x);
    }
    }

    
    

    
    

    Výstup:

    10

Kromě výše uvedených metod, pokud se pokusíme inicializovat finální statickou proměnnou kdekoli jinde, pak dojde k chybě při kompilaci.

class Test {
final static int x;
public static void m()
{
x = 10;
}
public static void main(String args)
{
System.out.println(x);
}
}



Výstup:

error: cannot assign a value to final variable x

Implementace finální statické proměnné

class MainClass {
. final static String company = "GFG";
String name;
int rollno;
public
static void main(String args)
{
MainClass ob = new MainClass();
ob.company = "Geeksforgeeks";
ob.name = "Bishal";
ob.rollno = 007;
System.out.println(ob.company);
System.out.println(ob.name);
System.out.println(ob.rollno);
}
}



Výstup:

error: cannot assign a value to final variable company

Na tomto článku se podílel Bishal Kumar Dubey. Pokud se vám GeeksforGeeks líbí a chtěli byste přispět, můžete také napsat článek pomocí stránky contribute.geeksforgeeks.org nebo poslat svůj článek na adresu [email protected]. Uvidíte, jak se váš článek objeví na hlavní stránce GeeksforGeeks, a pomůžete tak ostatním geekům.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.