Σε αυτό το σεμινάριο, θα μάθουμε για το Java Type Casting και τους τύπους του με τη βοήθεια παραδειγμάτων.
Προτού μάθετε για το Java Type Casting , βεβαιωθείτε ότι γνωρίζετε για τους τύπους δεδομένων Java.
Τύπος μετάδοσης
Η διαδικασία της μετατροπής της αξίας ενός τύπου δεδομένων ( int
, float
, double
, κλπ) σε έναν άλλο τύπο δεδομένων που είναι γνωστό ως typecasting.
Στην Java, υπάρχουν 13 τύποι μετατροπής τύπου. Ωστόσο, σε αυτό το σεμινάριο, θα επικεντρωθούμε μόνο στους βασικούς 2 τύπους.
1. Χύτευση τύπου διεύρυνσης
2. Στενός τύπος χύτευσης
Για να μάθετε σχετικά με άλλους τύπους μετατροπών τύπου, επισκεφθείτε τη Java Type Conversion (επίσημη τεκμηρίωση Java).
Χύτευση τύπου διεύρυνσης
Στο Casting Type Widening , η Java μετατρέπει αυτόματα έναν τύπο δεδομένων σε έναν άλλο τύπο δεδομένων.
Παράδειγμα: Μετατροπή int σε διπλό
class Main ( public static void main(String() args) ( // create int type variable int num = 10; System.out.println("The integer value: " + num); // convert into double type double data = num; System.out.println("The double value: " + data); ) )
Παραγωγή
Η ακέραια τιμή: 10 Η διπλή τιμή: 10.0
Στο παραπάνω παράδειγμα, εκχωρούμε τη int
μεταβλητή τύπου που ονομάζεται num σε μια double
μεταβλητή τύπου που ονομάζεται δεδομένα.
Εδώ, η Java μετατρέπει πρώτα τα int
δεδομένα τύπου σε double
τύπο. Και μετά εκχωρήστε το στη double
μεταβλητή.
Στην περίπτωση Casting Type Widening , ο χαμηλότερος τύπος δεδομένων (με μικρότερο μέγεθος) μετατρέπεται στον υψηλότερο τύπο δεδομένων (με μεγαλύτερο μέγεθος). Ως εκ τούτου, δεν υπάρχει απώλεια δεδομένων. Αυτός είναι ο λόγος για τον οποίο αυτός ο τύπος μετατροπής συμβαίνει αυτόματα.
Σημείωση : Αυτό είναι επίσης γνωστό ως Implicit Type Casting .
Στενός τύπος χύτευσης
Στην Περιορισμένη μετάδοση τύπου, μετατρέπουμε μη αυτόματα έναν τύπο δεδομένων σε έναν άλλο χρησιμοποιώντας την παρένθεση.
Παράδειγμα: Μετατροπή διπλού σε int
class Main ( public static void main(String() args) ( // create double type variable double num = 10.99; System.out.println("The double value: " + num); // convert into int type int data = (int)num; System.out.println("The integer value: " + data); ) )
Παραγωγή
Η διπλή τιμή: 10,99 Η ακέραια τιμή: 10
Στο παραπάνω παράδειγμα, εκχωρούμε τη double
μεταβλητή τύπου που ονομάζεται num σε μια int
μεταβλητή τύπου που ονομάζεται δεδομένα.
Παρατηρήστε τη γραμμή,
int data = (int)num;
Εδώ, η int
λέξη-κλειδί μέσα στην παρένθεση δείχνει ότι η μεταβλητή αριθμού μετατρέπεται στον int
τύπο.
Στην περίπτωση της στενής μετάδοσης τύπου, οι υψηλότεροι τύποι δεδομένων (με μεγαλύτερο μέγεθος) μετατρέπονται σε χαμηλότερους τύπους δεδομένων (με μικρότερο μέγεθος). Ως εκ τούτου, υπάρχει η απώλεια δεδομένων. Αυτός είναι ο λόγος για τον οποίο αυτός ο τύπος μετατροπής δεν συμβαίνει αυτόματα.
Σημείωση : Αυτό είναι επίσης γνωστό ως Explicit Type Casting .
Ας δούμε μερικά από τα παραδείγματα μετατροπών άλλων τύπων στην Java.
Παράδειγμα 1: Μετατροπή τύπου από int σε String
class Main ( public static void main(String() args) ( // create int type variable int num = 10; System.out.println("The integer value is: " + num); // converts int to string type String data = String.valueOf(num); System.out.println("The string value is: " + data); ) )
Παραγωγή
Η ακέραια τιμή είναι: 10 Η τιμή συμβολοσειράς είναι: 10
Στο παραπάνω πρόγραμμα, παρατηρήστε τη γραμμή
String data = String.valueOf(num);
Εδώ, χρησιμοποιήσαμε τη valueOf()
μέθοδο της κλάσης Java String για να μετατρέψουμε τη μεταβλητή τύπου int σε συμβολοσειρά.
Παράδειγμα 2: Μετατροπή τύπου από String σε int
class Main ( public static void main(String() args) ( // create string type variable String data = "10"; System.out.println("The string value is: " + data); // convert string variable to int int num = Integer.parseInt(data); System.out.println("The integer value is: " + num); ) )
Παραγωγή
Η τιμή συμβολοσειράς είναι: 10 Η ακέραια τιμή είναι: 10
Στο παραπάνω παράδειγμα, παρατηρήστε τη γραμμή
int num = Integer.parseInt(data);
Εδώ, χρησιμοποιήσαμε τη parseInt()
μέθοδο της Integer
κλάσης Java για να μετατρέψουμε μια μεταβλητή τύπου συμβολοσειράς σε μια int
μεταβλητή.
Σημείωση : Εάν η μεταβλητή συμβολοσειράς δεν μπορεί να μετατραπεί σε ακέραια μεταβλητή τότε NumberFormatException
συμβαίνει μια εξαίρεση που ονομάζεται .