تبدیل نوع (Type Casting)
تبدیل نوع یعنی عوض کردن نوع داده. مثلاً int را به double تبدیل کنیم. در جاوا دو مدل داریم: گسترده شدن خودکار و باریک شدن دستی. مثل مدرسه، عدد صحیح و اعشاری را جدا تصور کن.
مدل های تبدیل نوع در جاوا
گسترده شدن (Widening) خودکار است. نوع کوچک به بزرگ می رود و چیزی کم نمی شود. مسیر کلی: byte → short → char → int → long → float → double.
باریک شدن (Narrowing) دستی است. نوع بزرگ به کوچک می رود و ممکن است اطلاعات کم شود. مسیر کلی: double → float → long → int → char → short → byte.
گسترده شدن خودکار
وقتی مقدار نوع کوچک را در نوع بزرگ می ریزیم، جاوا خودش تبدیل می کند.
int myInt = 9;
double myDouble = myInt; // تبدیل خودکار: int به double
System.out.println(myInt);
System.out.println(myDouble);
باریک شدن دستی
اینجا باید نوع هدف را داخل پرانتز بنویسی. ممکن است دقت از دست برود.
double myDouble = 9.78d;
int myInt = (int) myDouble; // تبدیل دستی: double به int
System.out.println(myDouble);
System.out.println(myInt);
نمونه واقعی بازی
امتیاز کاربر را درصد می کنیم. برای تقسیم دقیق، به double تبدیل می کنیم.
// بیشترین امتیاز بازی
int maxScore = 500;
// امتیاز واقعی کاربر
int userScore = 423;
double percentage = (double) userScore / maxScore * 100.0d;
System.out.println("User's percentage is " + percentage);
نکته: اگر داده اعشاری مهم است، از انواع داده مناسب استفاده کن. برای کدنویسی کوتاه تر هم کلیدواژه var را ببین. همچنین صفحه تبدیل نوع را علامت گذاری کن.
گام های تمرین سریع
- یک int بساز و در double بریز.
- یک double بساز و به int تبدیل کن.
- خروجی ها را چاپ کن و تفاوت را ببین.
جمع بندی سریع
- گسترده شدن خودکار است و امن تر است.
- باریک شدن دستی است و ممکن است دقت کم شود.
- برای نتیجه دقیق، قبل از تقسیم، به double تبدیل کن.
- مسیرها را حفظ کن تا اشتباه نکنی.