تبدیل انواع داده
در زبان اندروید انواع مختلف داده ها میتوانند به یکدیگر تبدیل شوند.تبدیل انواع از دو جهت قابل بررسی است. android type conversion
- تبدیل انواع در ضمنی android type conversion
- تبدیل انواع در صریح android type conversion
تبدیل انواع در ضمنی android type conversion
در مورد تبدیل انواع در ضمنی، این قانون حاکم است که انواع کوچکتر به انواع بزرگتر تبدیل میشوند:
اگر یکی از عملوند ها long double باشد، عملوند دیگر به long double تبدیل میشود.
اگر یکی از عملوند ها double باشد، عملوند دیگر به double تبدیل میشود.
اگر یکی از عملوند ها float باشد، عملوند دیگر به float تبدیل میشود.
اگر یکی از عملوند ها unsigned long باشد، عملوند دیگر به unsigned long تبدیل میشود.
اگر یکی از عملوند ها long باشد، عملوند دیگر به long تبدیل میشود.
اگر یکی از عملوند ها unsigned int باشد، عملوند دیگر به unsigned int تبدیل میشود.
اگر یکی از عملوند ها int باشد، عملوند دیگر به int تبدیل میشود.
اگر یکی از عملوند ها short باشد، عملوند دیگر به short تبدیل میشود.
توجه داشته باشید که اگر یکی از عملوند ها از نوع long و دیگری از نوع unsigned int باشد،ولی مقدار unsigned int نتواند توسط long نمایش داده شود،هر دو عملوند به unsigned long تبدیل میشوند.
به طور مثال:
1 2 3 4 5 | char ch; int i; float f; double d; result =( ch/i )+( f*d )- ( f+i ) |
در این عبارت چهار نوع مختلف با هم ترکیب شده اند و نوع نتیجه بر اساس تغییر انواعی که صورت گرفته است double است.بنابراین متغیر result باید از نوع double باشد.
تبدیل انواع در صریح android type conversion
تبدیل انواع در صریح وقتی رخ میدهد که دو نوع مختلف به یکدیگر نسبت داده شوند.برای اینکه تبدیل نوع در صریح صورت گیرد،نوع مورد انتظار را ذکر میکنیم.
به طور مثال:
1 2 3 4 | int x = 20; float y,m=3.14; y= (float) x; x= (int) m; |
در دستور سوم ،کلمه float که قبل از x در داخل پرانتز قرار گرفته است،موجب میشود مقدار x از نوع int به نوع float تبدیل گردد.در دستور چهارم ،کلمه int که قبل از m در داخل پرانتز قرار گرفته است موجب میشوذ که مقدار m از نوع float به نوع صحیح تبدیل شود و حاصل آن در x قرار گیرد.این گونه تبدیل نوع را type casting می نامند.
نوع منبع | نوع مقصد | اطلاعاتی که ممکن است از بین برود |
char | Signed char | اگر مقدار بیش از ۱۲۷ باشد،مقصد منفی خواهد شد. |
Short int | char | ۸ بیت باارزش |
int | char | ۸ بیت باارزش |
int | char | ۲۴ بیت باارزش |
Long int | char | ۲۴ بیت باارزش |
int | Short int | اطلاعات از بین نمی رود |
int | Short int | ۱۶ بیت باارزش |
Long int | int | ۱۶ بیت باارزش |
Long int | int | اطلاعات از بین نمی رود |
float | int | بخش کسری و یا بیشتر |
double | float | نتیجه گرد می شود |
Long double | double | نتیجه گرد می شود |
بدیهی است که در تبدیل نوع صریح ممکن است بخشی از اطلاعات از بین برود كه بايد در نتيجه حاصل از
تبدیل صریح دقت كافي به خرج داد.