Сравнителна таблица:
Основа за сравнение | Тип Кастинг | Преобразуване на типа |
---|---|---|
значение | Един тип данни се присвоява на друг от потребителя, като се използва оператор за прехвърляне, след което се нарича "Тип Кастинг". | Конвертирането на един тип данни в друг автоматично от компилатора се нарича "Type Conversion". |
приложен | Леенето на типа може да се приложи и за два типа "несъвместими" данни. | Преобразуването на типа може да се осъществи само когато два типа данни са „съвместими“. |
Оператор | За прехвърляне на тип данни към друг е необходим оператор за кастинг "()". | Не се изисква оператор. |
Размер на типовете данни | Типът на дестинацията може да бъде по-малък от типа на източника. | Тук типът на дестинацията трябва да бъде по-голям от типа на източника. |
Изпълнено | Това се прави по време на програмирането. | Това се прави изрично, докато се компилира. |
Тип конверсия | Съкращаване на конверсията. | Разширяване на преобразуването. |
пример | int a; байт b; ... ... b = (байт) a; | int a = 3; плувка б; б = а; // стойност в b = 3.000. |
Дефиниция на тип кастинг
Леенето на типа може да се дефинира като прехвърляне на един тип данни към друг тип данни от програмиста по време на проектирането на програмата. Автоматичното преобразуване на един тип данни в друг не е възможно през цялото време. Може да е условие, че „типът на дестинацията“ е по-малък от „типа източник“, така че програмистът трябва да изрично да прехвърли по-големия тип данни на по-малък тип данни, използвайки оператора на кастинг „()“. Тъй като по-големият тип данни се модулира към по-малкия тип данни, той също се нарича „стесняващо преобразуване“.
destination_type = (target_type) променлива / стойност // целевият тип е тип, в който искате да конвертирате типа източник, който винаги е типът цел.
Нека го разберем с един пример. Искате да преобразувате типа данни „int“ в „byte“, сега, тъй като „byte“ е по-малък от „int“, преобразуването на типа не е позволено. Тук трябваше да подразбираме „int“ в „byte“ като използваме операторът на кастинг „()“. Тъй като „int“ е по-голям от „байт“, размерът на „int“ ще бъде намален до обхват „int mod byte“.
int a; байт b; ... ... b = (байт) a;
Когато 'float' се преобразува в 'int', размерът на float се съкращава, като 'int' не съхранява дробната стойност. Ако размерът на типа на местоназначението е твърде малък, за да може да се включи типът източник, тогава типът източник е тип „диапазон“ от тип на дестинация по модул. Кастингът може да се приложи и когато типовете данни са съвместими, добра практика е да се използва тип кастинг, където е необходимо преобразуване на типа.
Дефиниране на преобразуване на типа
Преобразуването на типа е автоматично преобразуване на един тип данни в друг, когато е необходимо, направено изрично от компилатора. Но има две условия, които трябва да бъдат изпълнени преди преобразуването на типа.
- Типът източник и дестинация трябва да са съвместими.
- Типът цел трябва да бъде по-голям от типа на източника.
Тези две условия трябва да отговарят за постигане на преобразуване на типа и този вид преобразуване се нарича „разширяващо преобразуване“, тъй като по-малък тип се преобразува в по-голям тип, случва се разширяване на типа. За това разширяващо се преобразуване числовите типове като „int“, „float“ са съвместими помежду си, докато числовите за символи и булеви или char за boolean също не са съвместими.
Този пример ще даде по-добра представа за това
int a = 3; плувка б; б = а; // стойност в b = 3.000.
Тук 'int' се преобразува в 'float', което е по-голямо от 'int', така че се случва разширяване на типа източник. Тук не се изисква оператор на кастинг, тъй като компилаторът ще го направи изрично.
Ключови разлики между тип отливане и преобразуване
- Основната разлика, която отличава тип кастинг от преобразуване на типа, е, че типът кастинг е преобразуване на един тип в друг, направено от програмиста. От друга страна, преобразуването на типа е преобразуване на един тип в друг, направено от компилатора при компилирането.
- Леенето на типа може да бъде приложено към типовете данни, които може да не са съвместими помежду си, но преобразуването на типа може да се прилага само за типове данни, които са съвместими помежду си.
- Превръщането на един тип в друг при кастинг тип изисква операторът на кастинг "()", докато преобразуването на един тип данни в друг при преобразуване на типа не изисква никакъв оператор.
- При преобразуването на един тип данни в друг при кастинг, типът на местоназначението може да бъде по-голям или по-малък от типа източник. От друга страна, типът на местоназначението трябва да бъде по-голям от типа на източника при преобразуването на типа.
- Превръщането на един тип в друг се извършва при кодиране в тип кастинг, докато при преобразуването на типа конвертирането на един тип в друг се извършва изрично по време на компилацията.
- Предаването на тип се нарича стесняване на преобразуването, тъй като тук типът на дестинацията може да бъде по-малък от типа на източника, докато преобразуването на типа се нарича разширяващо преобразуване, защото тук типът на дестинацията трябва да бъде по-голям от типа на източника.
Заключение:
Може да се заключи, че тип преобразуване и тип кастинг, и двете изпълняват задачата за конвертиране на един тип данни в друг, но се различават в смисъл, че типът кастинг се извършва от програмиста, използвайки оператор на гласове '()' и преобразуване на типа се извършва от компилатор и не използва никакъв оператор.