logo

סוגי נתונים לא פרימיטיביים ב-Java

סוגי נתונים מגדירים את סוג הנתונים המאוחסנים במשתנה. הסוג מציין את סוג הנתונים (גדלים וערכים שונים).

לשפת התכנות Java יש שני סוגים של סוגי נתונים

  1. סוגי נתונים לא פרימיטיביים

    בניגוד לסוגי נתונים פרימיטיביים, אלה אינם מוגדרים מראש. אלו הם סוגי נתונים המוגדרים על ידי המשתמש שנוצרו על ידי מתכנתים. סוגי נתונים אלה משמשים לאחסון ערכים מרובים.

    מערך בתים ל-Java מחרוזת

    לדוגמה, שקול את א מערך המאחסן קבוצת ערכים. Class הוא גם סוג פרימיטיבי המאחסן שיטות ומשתנים שונים. לכן, אלה נקראים גם בשם סוגי נתונים מתקדמים ב-Java.

    בכל פעם שמוגדר סוג נתונים לא פרימיטיבי, הוא מתייחס למיקום זיכרון שבו הנתונים מאוחסנים בזיכרון הערימה, כלומר, הוא מתייחס למיקום הזיכרון שבו מוצב אובייקט. לכן, נקרא גם משתנה מסוג נתונים לא פרימיטיבי סוג הנתונים המוזכרים אוֹ פשוט משתנה הפניה לאובייקט .

    משתנה התייחסות לאובייקט חי על זיכרון המחסנית והאובייקט שאליו הוא מצביע תמיד חי על זיכרון הערימה. הערימה מחזיקה מצביע לאובייקט שעל הערימה.

    בתכנות ג'אווה, כל סוגי הנתונים הלא פרימיטיביים נקראים פשוט אובייקטים שנוצרים על ידי יצירת מחלקה.

    נקודות מפתח:

    1. ערך ברירת המחדל של כל משתנה התייחסות הוא null.
    2. בכל פעם שאנו מעבירים סוג נתונים לא פרימיטיבי למתודה, אנו מעבירים את הכתובת של אותו אובייקט שבו הנתונים מאוחסנים.

    סוגי נתונים לא פרימיטיביים

    ישנם חמישה סוגים של סוגי נתונים לא פרימיטיביים ב-Java. הם כדלקמן:

    1. מעמד
    2. לְהִתְנַגֵד
    3. חוּט
    4. מַעֲרָך
    5. מִמְשָׁק

    1. מחלקה וחפצים:

    א מעמד ב-Java הוא סוג נתונים המוגדר על ידי המשתמש, כלומר הוא נוצר על ידי המשתמש. הוא משמש תבנית לנתונים המורכבת ממשתני חברים ושיטות.

    א לְהִתְנַגֵד הוא המשתנה של המחלקה, שיכול לגשת לאלמנטים של המחלקה, כלומר שיטות ומשתנים.

    דוגמא:

    רשימה מקושרת

    בדוגמה הבאה, אנו יוצרים מחלקה המכילה את המשתנים והשיטות ( add() ו-sub() ). כאן, אנו ניגשים לשיטות באמצעות האובייקט של המחלקה 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(); } } 

    תְפוּקָה:

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

    2. ממשק:

    א מִמְשָׁק דומה למחלקה אולם ההבדל היחיד הוא שהשיטות שלה מופשטות כברירת מחדל כלומר אין להן גוף. לממשק יש רק את המשתנים הסופיים והצהרות השיטה. זה נקרא גם מחלקה מופשטת לחלוטין.

    אמר מדורי

    הערה: אם המחלקה מיישמת ממשק, עליה ליישם את כל השיטות של ממשק זה. אם לא, עלינו להכריז על המחלקה כמופשטת.

    דוגמא:

    בדוגמה הבאה, אנו יוצרים את הממשק CalcInterface עם שתי שיטות מופשטות ( הכפל () וחלק () ). כאן, הכיתה InterfaceExample מיישמת את הממשק ומגדירה עוד יותר את השיטות של ממשק זה. לאחר מכן, אובייקט המחלקה משמש לגישה לשיטות אלו.

    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. מחרוזת:

    מחרוזת מייצגת רצף של תווים למשל 'Javatpoint', 'Hello world' וכו'. מחרוזת היא המחלקה של Java.

    אחת הדרכים ליצור מחרוזת ולאחסן בה ערך מוצגת להלן:

     String str = 'You're the best'; 

    כאן, משתנה מסוג מחרוזת str יש את הערך 'אתה הכי טוב'. לחץ כאן כדי להבין יותר על מחרוזת ב-Java .

    דוגמא:

    git add --all

    בדוגמה הבאה, אנו יוצרים מחרוזת עם ערך. כאן, אנו משתמשים באחת משיטות המחלקה String, substring() אשר מדפיס את החלק שצוין באינדקס של המחרוזת.

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

    תְפוּקָה:

     Hello! This is 

    4. מערך:

    א מַעֲרָך הוא סוג נתונים שיכול לאחסן מספר משתנים הומוגניים, כלומר משתנים מאותו סוג ברצף. הם מאוחסנים בצורה אינדקסית החל ממדד 0. המשתנים יכולים להיות סוגי נתונים פרימיטיביים או לא פרימיטיביים.

    מערך js

    הדוגמה הבאה מראה כיצד להכריז על מערך של סוג נתונים פרימיטיבי int :

     int [ ] marks; 

    הדוגמה הבאה מראה כיצד להכריז על מערך של סוג נתונים לא פרימיטיבי:

     Student [ ] students; 

    איפה, סטוּדֶנט הוא שם המחלקה ו-[ ] יוצר מערך של אובייקט תלמידים .

    דוגמא:

    בדוגמה הבאה, אנו יוצרים שני מערכים בסיסיים, שבהם האחד מאותחל והשני מוצהר (הקלט נקרא מהמשתמש). יתר על כן, אנו מדפיסים את המערך באמצעות לולאת 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;>

    ההבדל בין סוגי נתונים פרימיטיביים ולא פרימיטיביים ב-Java

    1. ב-Java, סוגי הנתונים הפרימיטיביים מוגדרים מערכתית אולם עלינו ליצור ולהגדיר את סוגי הנתונים הלא פרימיטיביים.
    2. בסוג נתונים פרימיטיבי, משתנים יכולים לאחסן רק ערך אחד בכל פעם. עם זאת, בסוגי נתונים לא פרימיטיביים, ניתן לאחסן מספר ערכים מאותו סוג או מסוג שונה או שניהם.
    3. כל הנתונים עבור משתני סוג פרימיטיביים מאוחסנים בערימה ואילו עבור סוגי התייחסות, המחסנית מחזיקה מצביע לאובייקט בערימה.
    4. טיפוס פרימיטיבי מתחיל באות קטנה, בעוד טיפוסים לא פרימיטיביים מתחילים באות גדולה.
    5. הגודל של טיפוס פרימיטיבי תלוי בסוג הנתונים, בעוד שלטיפוסים לא פרימיטיביים יש את אותו גודל.