Διαφορά μεταξύ χύτευσης τύπου και μετατροπής τύπου
Περιεχόμενο
- Συγκριτικό διάγραμμα:
- Ορισμός της χύτευσης τύπου
- Παράδειγμα
- Ορισμός της μετατροπής τύπου
- Παράδειγμα
- Συμπέρασμα:
Η βασική διαφορά μεταξύ της μετατροπής τύπου και της χύτευσης τύπων, δηλ. Η μετατροπή τύπου γίνεται "αυτόματα" από τον μεταγλωττιστή, ενώ η χύτευση τύπου πρέπει να γίνει "ρητά" από τον προγραμματιστή.
Οι δύο όροι "χύτευση τύπου" και "μετατροπή τύπου" εμφανίζονται όταν υπάρχει ανάγκη μετατροπής ενός τύπου δεδομένων σε άλλο. Όταν οι δύο τύποι είναι συμβατοί μεταξύ τους, τότε η μετατροπή ενός τύπου σε άλλο γίνεται αυτόματα από τον μεταγλωττιστή. Ας συζητήσουμε τη διαφορά τόσο της χύτευσης τύπου όσο και της μετατροπής με τη βοήθεια του πίνακα σύγκρισης.
- Συγκριτικό διάγραμμα
- Ορισμός
- Βασικές διαφορές
- συμπέρασμα
Συγκριτικό διάγραμμα:
Βάση σύγκρισης | Τύπος χύτευσης | Μετατροπή τύπου |
---|---|---|
Εννοια | Ένας τύπος δεδομένων έχει εκχωρηθεί σε άλλο από τον χρήστη, χρησιμοποιώντας έναν χειριστή cast και στη συνέχεια καλείται "Casting Type". | Η μετατροπή ενός τύπου δεδομένων σε άλλο αυτόματα από τον μεταγλωττιστή ονομάζεται "Μετατροπή τύπου". |
Εφαρμοσμένος | Η χύτευση τύπου μπορεί επίσης να εφαρμοστεί σε δύο μη συμβατούς τύπους δεδομένων. | Η μετατροπή τύπου μπορεί να εφαρμοστεί μόνο όταν δύο τύποι δεδομένων είναι συμβατοί. |
Χειριστής | Για τη μεταβίβαση ενός τύπου δεδομένων σε άλλο, απαιτείται χειριστής χύτευσης (). | Δεν απαιτείται χειριστής. |
Μέγεθος Τύπων Δεδομένων | Ο τύπος προορισμού μπορεί να είναι μικρότερος από τον τύπο πηγής. | Εδώ ο τύπος προορισμού πρέπει να είναι μεγαλύτερος από τον τύπο προέλευσης. |
Εφαρμογή | Αυτό γίνεται κατά το σχεδιασμό του προγράμματος. | Αυτό γίνεται ρητά κατά τη σύνταξη. |
Τύπος μετατροπής | Περιορισμός της μετατροπής. | Διεύρυνση της μετατροπής. |
Παράδειγμα | int a; byte b; ... ... b = (byte) α. | int a = 3; float b; b = a; // αξία σε b = 3.000. |
Ορισμός της χύτευσης τύπου
Χύτευση τύπου μπορεί να οριστεί ως χύτευση ενός τύπου δεδομένων σε άλλο τύπο δεδομένων από τον προγραμματιστή κατά τον σχεδιασμό του προγράμματος. Η αυτόματη μετατροπή ενός τύπου δεδομένων σε άλλο δεν είναι δυνατή συνεχώς. Μπορεί να είναι η προϋπόθεση ότι ο «τύπος προορισμού» είναι μικρότερος από τον «τύπο πηγής». Επομένως, ο προγραμματιστής πρέπει να μεταφέρει τον μεγαλύτερο τύπο δεδομένων ρητά σε μικρότερο τύπο δεδομένων χρησιμοποιώντας τον χειριστή χύτευσης '()'. Καθώς ο μεγαλύτερος τύπος δεδομένων είναι διαμορφωμένος στον μικρότερο τύπο δεδομένων, ονομάζεται επίσης 'μείωση της μετατροπής'.
Δήλωση:destination_type = (target_type) μεταβλητή / τιμή // ο τύπος στόχου είναι ένας τύπος στον οποίο θέλετε να μετατρέψετε τον τύπο προέλευσης, είναι πάντα ο τύπος προορισμού.
Παράδειγμα
Ας το καταλάβουμε με ένα παράδειγμα. Θέλετε να μετατρέψετε τον τύπο δεδομένων 'int' σε 'byte'. Τώρα, καθώς το byte είναι μικρότερο από το int, δεν επιτρέπεται η μετατροπή τύπου. Εδώ, έπρεπε να μετατρέψουμε σιωπηρά το 'int' σε 'byte' χρησιμοποιώντας το χειριστή casting '()'. Δεδομένου ότι το 'int' είναι μεγαλύτερο από το 'byte', το μέγεθος του 'int' θα μειωθεί στο εύρος "int mod byte".
int a; byte b; ... ... b = (byte) a;
Όταν το 'float' μετατραπεί σε 'int', το μέγεθος του float παίρνει περικομμένο, καθώς το 'int' δεν αποθηκεύει την κλασματική τιμή. Εάν το μέγεθος του τύπου προορισμού είναι πολύ μικρό για να χωρέσει ο τύπος πηγής, ο τύπος πηγής είναι ο τύπος προορισμού modulo "range". Η χύτευση μπορεί επίσης να εφαρμοστεί όταν οι τύποι δεδομένων είναι συμβατοί. Είναι καλή πρακτική η χρήση χύτευσης τύπου όπου απαιτείται μετατροπή τύπου.
Ορισμός της μετατροπής τύπου
Μετατροπή τύπου είναι η αυτόματη μετατροπή ενός τύπου δεδομένων σε άλλο όποτε απαιτείται, γίνεται ρητά από τον μεταγλωττιστή. Αλλά υπάρχουν δύο προϋποθέσεις που πρέπει να πληρούνται πριν από την μετατροπή τύπου.
- Ο τύπος πηγής και προορισμού πρέπει να είναι συμβατός.
- Ο τύπος προορισμού πρέπει να είναι μεγαλύτερος από τον τύπο πηγής.
Αυτές οι δύο συνθήκες θα πρέπει να ικανοποιούν για να επιτευχθεί μετατροπή τύπου, και αυτό το είδος μετατροπής ονομάζεται 'διεύρυνση της μετατροπής', καθώς ένας μικρότερος τύπος μετατρέπεται σε μεγαλύτερο τύπο, εμφανίζεται διεύρυνση του τύπου. Για αυτή τη διευρυμένη μετατροπή, οι αριθμητικοί τύποι ως 'int', 'float' είναι συμβατοί μεταξύ τους ενώ ο αριθμητικός χαρακτήρας και το boolean ή το char στο boolean δεν είναι συμβατοί.
Παράδειγμα
Αυτό το παράδειγμα θα δώσει μια καλύτερη εικόνα αυτού
int a = 3; float b; b = a; // αξία σε b = 3.000.
Εδώ, το 'int' μετατρέπεται σε 'float' που είναι μεγαλύτερο από το 'int', έτσι εμφανίζεται η διεύρυνση του τύπου πηγής. Εδώ, δεν απαιτείται χειριστής χύτευσης, καθώς ο μεταγλωττιστής θα το κάνει ρητά.
- Η βασική διαφορά που διαφοροποιεί τη χύτευση τύπου από την μετατροπή τύπου είναι ότι η χύτευση τύπου είναι η μετατροπή ενός τύπου σε άλλο, που γίνεται από τον προγραμματιστή. Από την άλλη πλευρά, η μετατροπή τύπου είναι η μετατροπή ενός τύπου σε άλλο, που γίνεται από τον μεταγλωττιστή κατά τη σύνταξη.
- Η χύτευση τύπων μπορεί να εφαρμοστεί στους τύπους δεδομένων, οι οποίοι μπορεί να μην είναι συμβατοί μεταξύ τους. Αντιστρόφως, η μετατροπή τύπου μπορεί να εφαρμοστεί μόνο στα τύπους δεδομένων που είναι συμβατά μεταξύ τους.
- Η μετατροπή ενός τύπου σε άλλο σε χύτευση τύπου απαιτεί τον χειριστή χύτευσης "()", ενώ η μετατροπή ενός τύπου δεδομένων σε άλλο σε μετατροπή τύπου δεν απαιτεί κανέναν χειριστή.
- Κατά τη μετατροπή ενός τύπου δεδομένων σε άλλο στη χύτευση τύπου, ο τύπος προορισμού μπορεί να είναι μεγαλύτερος ή μικρότερος από τον τύπο πηγής. Αντιθέτως, ο τύπος προορισμού πρέπει να είναι μεγαλύτερος από τον τύπο πηγής στην μετατροπή τύπου.
- Η μετατροπή ενός τύπου σε άλλο τύπο γίνεται κατά την κωδικοποίηση σε χύτευση τύπου. Αντίθετα, σε μετατροπή τύπου, η μετατροπή ενός τύπου σε άλλο γίνεται ρητά κατά τη διάρκεια της σύνταξης.
- Η χύτευση τύπου ονομάζεται στενότητα μετατροπής, επειδή εδώ ο τύπος προορισμού μπορεί να είναι μικρότερος από τον τύπο πηγής. Αντίθετα, η μετατροπή τύπου καλείται διεύρυνση της μετατροπής, επειδή εδώ ο τύπος προορισμού πρέπει να είναι μεγαλύτερος από τον τύπο πηγής.
Συμπέρασμα:
Μπορούμε να συμπεράνουμε ότι η μετατροπή τύπου και η χύτευση τύπου, και οι δύο εκτελούν την εργασία της μετατροπής ενός τύπου δεδομένων σε άλλο, αλλά διαφέρουν με την έννοια ότι η χύτευση τύπων γίνεται από τον προγραμματιστή, χρησιμοποιώντας το cast operator () και η μετατροπή τύπου γίνεται από τον μεταγλωττιστή , και δεν χρησιμοποιεί κανένα φορέα εκμετάλλευσης.