logo

Referenční datové typy v Javě

Java nabízí dva typy

Referenční typy Java

V Javě existuje následujících pět typů referenčních typů:

Typ reference Popis
Třída Je to soubor instrukcí. Popisuje obsah objektu.
Pole Poskytuje datovou strukturu pevné velikosti, která ukládá prvky stejného typu.
Anotace Poskytuje způsob, jak spojit metadata s prvky programu.
Rozhraní Je implementován pomocí tříd Java.
Výčet Je to speciální druh třídy, která je typově bezpečná. Každý prvek ve výčtu je instancí tohoto výčtu.

Referenční vs primitivní datové typy

Typ reference Primitivní typ
Není předdefinován kromě řetězce. Je předdefinovaný v Javě.
Všechny typy odkazů začínají velkými písmeny. Všechny primitivní typy začínají malým písmenem.
Neprimitivní typy mají všechny stejnou velikost. Velikost primitivního typu závisí na datovém typu.
Používá se k vyvolání nebo volání metod. Nemůžeme vyvolat metodu s primitivním typem.
Může být nulový. Nemůže být nulový. Vždy to má hodnotu.
Příklady referenčních datových typů jsou třída, pole, řetězec, rozhraní atd. Příklady primitivních datových typů jsou int, float, double, boolean, long atd.
JVM standardně alokuje 8 bajtů pro každou referenční proměnnou. Jeho velikost závisí na datovém typu.
Příklad : Demo d1; Příklad : int num=78;

Alokace paměti a sběr odpadu

V Javě, nové klíčové slovo se používá k vytvoření instance třídy. Jinými slovy, vytvoří instanci třídy alokací Paměť pro nový objekt a vrácení odkazu na tuto paměť. Objekty zabírají paměť v prostoru haldy Java. Můžeme také použít nové klíčové slovo k vytvoření objekt pole .

 ClassName objectName = new ClassName(); 

Pokud neexistují žádné odkazy na objekt, lze paměť používanou tímto objektem získat zpět během procesu shromažďování paměti.

Převod mezi primitivním typem a referenčním typem

Je volána konverze primitivního typu na referenční typ autoboxing a volá se převod referenčního typu na primitivní typ rozbalení .

Porovnání typu reference

Můžeme také porovnat referenční typy v Javě. Java poskytuje dva způsoby porovnání typů odkazů:

android proces acore se stále zastavuje

Pomocí operátoru rovná se (==).

Porovnává paměťová místa objektů. Pokud je adresa paměti (odkaz) obou objektů stejná, jsou si tyto objekty rovny. Všimněte si, že neporovnává obsah objektu. Například:

 Demo d1 = new Demo('Atlanta'); //creating a reference of Demo class Demo d2 = d1; //assigning the reference d1 into d2 if(d1=d2) //comparing reference 

Pomocí metody String.equals().

Metoda patří k Tětiva třída. Přepíše rovná se() metoda Objekt třída . Také používá operátor rovná se (==) pro porovnání typu odkazu. Zvažte například následující fragment kódu:

 String str1='JAVA'; String str2='JAVA'; String str3='java'; System.out.println(str1.equals(str2)); //returns true because content and case is same System.out.println(str1.equals(str3)); //returns false because case is not same 

Kopírování typu reference

Při kopírování typů odkazů existují dvě možnosti, buď se vytvoří kopie odkazu na objekt, nebo se vytvoří skutečná kopie (vytvoření nové kopie) objektu.

V následujícím příkladu jsme objektu přiřadili referenci. Pokud jsme v objektu provedli nějaké změny, bude to také odrážet referenci a naopak.

 Sum s1 = new Sum(); Sum s2= s1;