CodeGym /בלוג Java /Random-HE /ליהוק מסוג Java
John Squirrels
רָמָה
San Francisco

ליהוק מסוג Java

פורסם בקבוצה

מהו Type Casting ב-Java?

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

מדוע נדרשת ליהוק סוג?

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

סוגי ליהוק מסוג Java

ישנם שני סוגים של ליהוק סוג בג'אווה.
  1. יציקת סוג הרחבת - ידוע גם בשם יציקת סוג מרומזת או אוטומטית
  2. יציקה מסוג צמצום - ידוע גם בשם יציקה מסוג מפורש או ידני

סוג הרחבת יציקה

הרחבת טיפוס, כפי שהשם מרמז, מתייחס להרחבת סוג נתונים קטן יותר לסוג נתונים גדול יותר. אנו מבצעים את ה-typecasting הזה כאשר אנו רוצים להמיר סוג קטן לסוג גדול. סוגי הנתונים חייבים להיות תואמים זה לזה. אין המרה מרומזת מספרי ל-char או סוג בוליאני. ב-Java, סוגי char ו-boolean אינם תואמים.
byte -> short -> char -> int -> long -> float -> double
סוג זה של ליהוק מתבצע באופן אוטומטי על ידי המהדר ללא כל אובדן מידע. זה לא דורש שום טריגר חיצוני על ידי המתכנת.

דוגמא

//Automatic type conversion
public class WideningExample {
   public static void main(String[] args) {

       int i = 100;
       System.out.println("int value: " + i);

       // int to long type
       long l = i;
       System.out.println("int to long value: " + l);

       // long to float type
       float f = l;
       System.out.println("int to float value: " + f);


       byte b = 1;
       System.out.println("byte value: " + b);

       // byte to int type
       i = b;
       System.out.println("byte to int value: " + i);

       char c = 'a';
       System.out.println("char value: " + c);

       // char to int type
       i = c;

       // prints the ASCII value of the given character
       // ASCII value of 'a' = 97
       System.out.println("char to int value: " + i);
   }
}

תְפוּקָה

int ערך: 100 int ל-long ערך: 100 int to float ערך: 100.0 byte ערך: 1 byte to int ערך: 1 char ערך: char to int ערך: 97

הֶסבֵּר

בקוד שלמעלה, הראינו את הרחבת ה-typecasting אשר מתבצעת על ידי המהדר באופן אוטומטי. קודם כל, הקצינו ערכים ל- int , byte ו- char . לאחר מכן הקצינו את ערכי int ל- long ו- float , ששניהם גדולים יותר מ- int . הקצינו גם את ערכי ה- byte וה- char ל- int . גם בייט וגם char הם סוגי נתונים קטנים יותר מאשר int , ולכן ההמרות הללו היו מרומזות.

צמצום סוג יציקה

צמצום ה-typecasting, כפי שהשם מרמז, מתייחס לצמצום של סוג נתונים גדול יותר לסוג נתונים קטן יותר. אנו מבצעים את ה-typecasting הזה כאשר אנו רוצים להמיר סוג גדול לסוג קטן.
double -> float -> long -> int -> char -> short -> byte
עבור סוג זה של ליהוק, אנו עוקפים את המרת ברירת המחדל של Java על ידי ציון ההמרה שלנו. כדי להשיג זאת, אנו כותבים את המשתנה או הערך שיש לטייפ לפניו סוג נתוני היעד בסוגריים '()'. עם זאת, סוג זה של יציקה עלול לגרום לאובדן אפשרי של דיוק.

דוגמא

//Manual Type Conversion
public class NarrowingExample {
   public static void main(String[] arg) {

       // double data type
       double d = 97.04;
       // Print statements
       System.out.println("double value: " + d);

       // Narrowing type casting from double to long
       // implicitly writing the target data type in () followed by initial data type
       long l = (long) d;

       // fractional part lost - loss of precision
       System.out.println("long value: " + l);

       // Narrowing type casting from double to int
       // implicitly writing the target data type in () followed by initial data type
       int i = (int) l;

       // fractional part lost - loss of precision
       System.out.println("int value: " + i);

       // Narrowing type casting from double to int
       // implicitly writing the target data type in () followed by initial data type
       char c = (char) i;

       // displaying character corresponding to the ASCII value of 100
       System.out.println("char value: " + c);
   }
}

תְפוּקָה

ערך כפול: 97.04 ערך ארוך: 97 ערך int: 97 ערך char: א

הֶסבֵּר

צמצום ה-typecasting צריך להיעשות במפורש על ידי המתכנת באמצעות תחביר סטנדרטי. בתוכנית שלמעלה, התחלנו עם ערך כפול שהוא גדול יותר מסוגי הנתונים long ו- int . הקלדנו את זה כפול ל- long ו- int על ידי שימוש בסוגריים עם סוגי נתוני היעד הרצויים. כמו כן, הקלדנו באופן ידני 'int' ל'char'.

סיכום

עד סוף פוסט זה, אנו מקווים שהכרתם את יציקת סוג Java בפירוט. למדת את שני סוגי ה-typecasting ב-Java. למדת גם כיצד להעיף באופן ידני את סוגי הנתונים שאינם תואמים באמצעות צמצום סוגcasting. אתה יכול לנסות שילובים אחרים של סוגי נתונים עם ערכים שונים בעצמך כדי להבין אותם יותר לעומק. המשך להתאמן כדי לקבל שליטה עמוקה יותר על הרעיון. עד אז, המשיכו לגדול ותמשיכו לזרוח!
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION