logo

Neprimityvūs duomenų tipai Java

Duomenų tipai apibrėžia duomenų, kurie saugomi kintamajame, tipą. Tipas nurodo duomenų tipą (skirtingi dydžiai ir reikšmės).

Java programavimo kalba turi dviejų tipų duomenų tipus

  1. Neprimityvūs duomenų tipai

    Skirtingai nuo primityvių duomenų tipų, jie nėra iš anksto nustatyti. Tai yra vartotojo apibrėžti duomenų tipai, sukurti programuotojų. Šie duomenų tipai naudojami kelioms reikšmėms saugoti.

    numpy dot produktas

    Pavyzdžiui, apsvarstykite an masyvas, kuriame saugoma reikšmių grupė. Klasė taip pat yra primityvus tipas, kuriame saugomi įvairūs metodai ir kintamieji. Todėl jie taip pat vadinami išplėstiniai duomenų tipai Java kalboje.

    Kai apibrėžiamas neprimityvus duomenų tipas, jis nurodo atminties vietą, kurioje duomenys saugomi krūvos atmintyje, t. y. nurodo atminties vietą, kurioje yra objektas. Todėl taip pat vadinamas neprimityvus duomenų tipo kintamasis nurodytas duomenų tipas arba tiesiog objekto nuorodos kintamasis .

    Objekto nuorodos kintamasis yra dėklo atmintyje, o objektas, į kurį jis nurodo, visada gyvena krūvos atmintyje. Krūva laiko žymeklį ant krūvos objekto.

    Java programavime visi neprimityvūs duomenų tipai tiesiog vadinami objektais, kurie sukuriami sukūrus klasę.

    Pagrindiniai klausimai:

    1. Numatytoji bet kurio nuorodos kintamojo reikšmė yra nulinė.
    2. Kai metodui perduodame neprimityvų duomenų tipą, perduodame to objekto, kuriame saugomi duomenys, adresą.

    Neprimityvių duomenų tipų tipai

    Java yra penkių tipų neprimityvūs duomenų tipai. Jie yra tokie:

    1. Klasė
    2. Objektas
    3. Styga
    4. Masyvas
    5. Sąsaja

    1. Klasė ir objektai:

    A klasė Java yra vartotojo apibrėžtas duomenų tipas, ty jį sukuria vartotojas. Jis veikia kaip duomenų šablonas, kurį sudaro narių kintamieji ir metodai.

    An objektas yra klasės kintamasis, galintis pasiekti klasės elementus, ty metodus ir kintamuosius.

    Pavyzdys:

    regex java

    Šiame pavyzdyje kuriame klasę, kurioje yra kintamieji ir metodai ( add() ir sub() ). Čia mes pasiekiame metodus naudodami klasės objektą 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(); } } 

    Išvestis:

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

    2. Sąsaja:

    An sąsaja yra panašus į klasę, tačiau vienintelis skirtumas yra tas, kad jos metodai pagal numatytuosius nustatymus yra abstraktūs, ty jie neturi kūno. Sąsaja turi tik galutinius kintamuosius ir metodų deklaracijas. Ji taip pat vadinama visiškai abstrakčia klase.

    bash, jei būklė

    Pastaba: Jei klasė įgyvendina sąsają, ji turi įgyvendinti visus tos sąsajos metodus. Jei ne, turime paskelbti klasę kaip abstrakčią.

    Pavyzdys:

    Šiame pavyzdyje mes sukuriame sąsają CalcInterface dviem abstrakčiais metodais ( padauginti () ir padalinti () ). Čia klasė InterfaceExample įgyvendina sąsają ir toliau apibrėžia tos sąsajos metodus. Tada, norint pasiekti šiuos metodus, naudojamas klasės objektas.

    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. Styga:

    Eilutė reiškia simbolių seką, pavyzdžiui, „Javatpoint“, „Hello world“ ir tt Eilutė yra „Java“ klasė.

    Žemiau parodytas vienas iš būdų sukurti eilutę ir išsaugoti joje vertę:

     String str = 'You're the best'; 

    Čia eilutės tipo kintamasis g turi vertę „Tu esi geriausias“. Spustelėkite čia, kad sužinotumėte daugiau apie Styga Java .

    Pavyzdys:

    reversinė eilutė java

    Šiame pavyzdyje kuriame eilutę su verte. Čia mes naudojame vieną iš stygų klasės metodų, poeilutė () kuri išspausdina nurodytą indeksuotą eilutės dalį.

    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); } } 

    Išvestis:

     Hello! This is 

    4. Masyvas:

    An masyvas yra duomenų tipas, galintis saugoti kelis vienarūšius kintamuosius, t. y. to paties tipo kintamuosius sekoje. Jie saugomi indeksuotu būdu, pradedant indeksu 0. Kintamieji gali būti primityvūs arba neprimityvūs duomenų tipai.

    klausytis uosto

    Toliau pateiktame pavyzdyje parodyta, kaip deklaruoti primityvaus tipo duomenų masyvą tarpt :

     int [ ] marks; 

    Toliau pateiktame pavyzdyje parodyta, kaip deklaruoti neprimityvaus tipo duomenų masyvą:

     Student [ ] students; 

    kur, Studentas yra klasės pavadinimas ir [ ] sukuria objektų masyvą studentai .

    Pavyzdys:

    Šiame pavyzdyje kuriame du pagrindinius masyvus, kuriuose vienas inicijuojamas, o kitas deklaruojamas (įvestis nuskaitoma iš vartotojo). Be to, mes spausdiname tuos masyvus naudodami for kilpą.

    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;>

    Skirtumas tarp primityvių ir neprimityvių duomenų tipų Java

    1. „Java“ primityvūs duomenų tipai yra apibrėžti sistemoje, tačiau turime sukurti ir apibrėžti neprimityvius duomenų tipus.
    2. Primityviame duomenų tipe kintamieji vienu metu gali saugoti tik vieną reikšmę. Tačiau ne primityviuose duomenų tipuose gali būti saugomos kelios to paties tipo arba skirtingo tipo reikšmės arba abi.
    3. Visi primityvaus tipo kintamųjų duomenys saugomi krūvoje, o nuorodų tipų kamino rodyklė laiko objektą krūvoje.
    4. Primityvus tipas prasideda mažąja raide, o ne primityvus tipas prasideda didžiąja raide.
    5. Primityvaus tipo dydis priklauso nuo duomenų tipo, o neprimityviųjų tipų dydis yra vienodas.