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;