logo

Neprimitívne dátové typy v Jave

Typy údajov definujú typ údajov, ktoré sú uložené v premennej. Typ určuje druh údajov (rôzne veľkosti a hodnoty).

Programovací jazyk Java má dva typy dátových typov

  1. Neprimitívne dátové typy

    Na rozdiel od primitívnych dátových typov nie sú tieto preddefinované. Ide o užívateľom definované dátové typy vytvorené programátormi. Tieto typy údajov sa používajú na uloženie viacerých hodnôt.

    symetrický rozdiel

    Zvážte napríklad pole, ktoré uchováva skupinu hodnôt. Trieda je tiež primitívny typ, ktorý ukladá rôzne metódy a premenné. Preto sa tieto nazývajú aj ako pokročilé dátové typy v Jave.

    Kedykoľvek je definovaný neprimitívny dátový typ, odkazuje na pamäťové miesto, kde sú dáta uložené v haldovej pamäti, t.j. odkazuje na pamäťové miesto, kde je umiestnený objekt. Preto sa nazýva aj premenná neprimitívneho typu údajov odkazovaný dátový typ alebo jednoducho objektová referenčná premenná .

    Referenčná premenná objektu žije v pamäti zásobníka a objekt, na ktorý ukazuje, vždy žije v pamäti haldy. Zásobník obsahuje ukazovateľ na objekt na halde.

    V programovaní Java sa všetky neprimitívne dátové typy jednoducho nazývajú objekty, ktoré sú vytvorené vytvorením inštancie triedy.

    Kľúčové body:

    1. Predvolená hodnota akejkoľvek referenčnej premennej je null.
    2. Kedykoľvek odovzdávame metóde neprimitívny dátový typ, odovzdávame adresu tohto objektu, kde sú dáta uložené.

    Typy neprimitívnych dátových typov

    V Jave existuje päť typov neprimitívnych dátových typov. Sú nasledovné:

    1. Trieda
    2. Objekt
    3. Reťazec
    4. Pole
    5. Rozhranie

    1. Trieda a predmety:

    A trieda v jazyku Java je typ údajov definovaný používateľom, tj je vytvorený používateľom. Funguje ako šablóna údajov, ktorá pozostáva z členských premenných a metód.

    An objekt je premenná triedy, ktorá môže pristupovať k prvkom triedy, t.j. metódam a premenným.

    Príklad:

    náhodné číslo medzi 1 a 10

    V nasledujúcom príklade vytvárame triedu obsahujúcu premenné a metódy ( add() a sub() ). Tu pristupujeme k metódam pomocou objektu triedy obj .

    ClassExample.java

     public class ClassExample { // defining the variables of class int a = 20; int b = 10; int c; // defining the methods of class public void add () { int c = a + b; System.out.println('Addition of numbers is: ' + c); } public void sub () { int c = a - b; System.out.println('Subtraction of numbers is: ' + c); } // main method public static void main (String[] args) { // creating the object of class ClassExample obj = new ClassExample(); // calling the methods obj.add(); obj.sub(); } } 

    Výkon:

     Addition of numbers is: 30 Subtraction of numbers is: 10 

    2. Rozhranie:

    An rozhranie je podobná triede, ale jediný rozdiel je v tom, že jej metódy sú štandardne abstraktné, t.j. nemajú telo. Rozhranie má iba konečné premenné a deklarácie metód. Nazýva sa aj plne abstraktná trieda.

    nový riadkový python

    Poznámka: Ak trieda implementuje rozhranie, musí implementovať všetky metódy tohto rozhrania. Ak nie, musíme triedu deklarovať ako abstraktnú.

    Príklad:

    V nasledujúcom príklade vytvárame rozhranie CalcInterface pomocou dvoch abstraktných metód ( násobiť () a deliť () ). Tu trieda InterfaceExample implementuje rozhranie a ďalej definuje metódy tohto rozhrania. Potom sa objekt triedy používa na prístup k týmto metódam.

    InterfaceExample.java

     interface CalcInterface { void multiply(); void divide(); } public class InterfaceExample implements CalcInterface { // defining the variables of class int a = 10; int b = 20; int c; // implementing the interface methods public void multiply() { int c = a * b; System.out.println('Multiplication of numbers is: ' + c); } public void divide() { int c = a / b; System.out.println('Division of numbers is: ' + c); } // main method public static void main (String[] args) throws IOException { InterfaceExample obj = new InterfaceExample(); // calling the methods obj.multiply(); obj.divide(); } } 

    3. Reťazec:

    Reťazec predstavuje postupnosť znakov, napríklad 'Javatpoint', 'Hello world' atď. String je trieda Java.

    Jeden zo spôsobov, ako vytvoriť reťazec a uložiť doň hodnotu, je uvedený nižšie:

     String str = 'You're the best'; 

    Tu premenná typu String str má hodnotu 'Si najlepší'. Kliknutím sem sa dozviete viac o Reťazec v jazyku Java .

    Príklad:

    string java pole

    V nasledujúcom príklade vytvárame reťazec s hodnotou. Tu používame jednu z metód triedy String, podreťazec() ktorý vypíše zadanú indexovanú časť reťazca.

    StringExample.java

     public class StringExample { public static void main(String[] args) { // creating a string and initializing it String str = 'Hello! This is example of String type'; // applying substring() on above string String subStr = str.substring(0,14); // printing the string System.out.println(subStr); } } 

    Výkon:

     Hello! This is 

    4. Pole:

    An pole je dátový typ, ktorý môže uchovávať viacero homogénnych premenných, t.j. premenných rovnakého typu v sekvencii. Sú uložené indexovaným spôsobom počínajúc indexom 0. Premenné môžu byť primitívne alebo neprimitívne dátové typy.

    dereferenčný ukazovateľ

    Nasledujúci príklad ukazuje, ako deklarovať pole primitívneho dátového typu int :

     int [ ] marks; 

    Nasledujúci príklad ukazuje, ako deklarovať pole neprimitívneho typu údajov:

     Student [ ] students; 

    kde, Študent je názov triedy a [ ] vytvára pole objektov študentov .

    Príklad:

    V nasledujúcom príklade vytvárame dve základné polia, v ktorých je jedno inicializované a druhé deklarované (vstup je načítaný od užívateľa). Ďalej tieto pole vytlačíme pomocou cyklu for.

    ArrayExample.java

     // importing required packages import java.io. * ; import java.util. * ; public class ArrayExample { public static void main(String[] args) throws IOException { int i; Scanner sc = new Scanner(System. in ); // declaring and initializing an array int arr[] = {1, 2, 3, 6, 9}; // defining another array arr1 int arr1[] = new int[5]; // reading values from the user System.out.println(&apos;Enter the numbers (size = 5) :&apos;); for (i = 0; i <5; i++) { arr1[i]="sc.nextInt();" } system.out.println('previous array with initialized size is: '); for (i="0;" i < 5; system.out.print(arr[i] + ' system.out.println('
    the new we have entered is:'); system.out.print(arr1[i] pre> <p> <strong>Output:</strong> </p> <pre> Enter the numbers (size = 5) : 56 43 22 1 7 Previous array with initialized size is: 1 2 3 6 9 The new array we have entered is: 56 43 22 1 7 </pre> <h2>Difference between Primitive and Non-primitive Data types in Java</h2> <ol class="points"> <li>In Java, the primitive data types are system defined however we have to create and define the non-primitive data types.</li> <li>In primitive data type, variables can store only one value at a time. However in non-primitive data types, either multiple values of the same type or different type or both can be stored.</li> <li>All the data for primitive type variables are stored on the stack whereas, for reference types, the stack holds a pointer to the object on the heap.</li> <li>A primitive type starts with a lowercase letter, while non-primitive types start with an uppercase letter.</li> <li>The size of a primitive type depends on the data type, while non-primitive types have all the same size.</li> </ol> <hr></5;>

    Rozdiel medzi primitívnymi a neprimitívnymi dátovými typmi v Jave

    1. V Jave sú primitívne dátové typy definované systémovo, ale musíme vytvoriť a definovať neprimitívne dátové typy.
    2. V primitívnom dátovom type môžu premenné uchovávať iba jednu hodnotu naraz. V neprimitívnych typoch údajov však možno uložiť buď viaceré hodnoty rovnakého typu alebo iného typu, prípadne oboje.
    3. Všetky údaje pre premenné primitívneho typu sú uložené v zásobníku, zatiaľ čo v prípade referenčných typov zásobník obsahuje ukazovateľ na objekt na halde.
    4. Primitívny typ začína malým písmenom, zatiaľ čo neprimitívne typy začínajú veľkým písmenom.
    5. Veľkosť primitívneho typu závisí od typu údajov, zatiaľ čo neprimitívne typy majú všetky rovnakú veľkosť.