تبدیل نوع (Java Type Casting)
تبدیل نوع (Type Casting): تغییر هویت دادهها 🔄🎭
تبدیل نوع زمانی اتفاق میافتد که بخواهید مقدارِ یک متغیر از یک نوع داده را به نوعِ دیگری تبدیل کنید. در جاوا دو نوع تبدیل داریم.
۱. تبدیل خودکار (Widening Casting)
این تبدیل زمانی است که یک نوعِ کوچکتر به یک نوعِ بزرگتر تبدیل میشود. چون دادهای از دست نمیرود، جاوا خودش این کار را انجام میدهد:
ترتیب: byte -> short -> char -> int -> long -> float -> double
۲. تبدیل دستی (Narrowing Casting)
این تبدیل زمانی است که یک نوعِ بزرگتر را در یک نوعِ کوچکتر میریزیم. احتمال از دست رفتن داده وجود دارد، لذا باید به صورت دستی (با پرانتز) انجام شود:
ترتیب: double -> float -> long -> int -> ...
چرا به Casting نیاز داریم؟
فرض کنید میخواهید میانگین نمرات را حساب کنید. مجموع نمرات (Integer) است اما نتیجه باید اعشاری (Double) باشد. اینجا باید Casting انجام دهید.
Integer.parseInt() دارد.
بخش تخصصی: عمیقتر در دنیای جاوا 🛠️💎
در این بخش، به نکاتی میپردازیم که در سطح حرفهای و مصاحبههای کاری بسیار مهم هستند.
۱. مدیریت حافظه (Memory Management)
در جاوا، دادهها در دو بخش از حافظه ذخیره میشوند: Stack و Heap. انواعِ داده اولیه (Primitives) معمولاً در Stack ذخیره میشوند که سرعت دسترسی به آنها بسیار بالاست. اشیاء و آرایهها در Heap ذخیره میشوند که حجم بیشتری دارد اما مدیریت آن توسط Garbage Collector انجام میشود. درک این تفاوت، کلید اصلی برای نوشتن برنامههای بهینه است.
۲. مفاهیم امنیت در سطح زبان
جاوا یکی از امنترین زبانهاست چون اجازه دسترسی مستقیم به آدرسهای فیزیکی حافظه (مانند اشارهگرها در C++) را نمیدهد. مضاف بر این، وجود Bytecode Verifier قبل از اجرا، تضمین میکند که کدهای مخرب یا نامعتبر اجرا نشوند.
۳. کدهای تمیز (Clean Code)
در پروژههای تیمی، خوانایی کد مهمتر از هوشمندانه بودن آن است. همیشه از نامهای معنادار برای متغیرها استفاده کنید (مثلاً به جای a از userAge استفاده کنید). همچنین رعایتِ CamelCase و استفاده درست از کامنتها، نگهداری پروژه را در آینده بسیار سادهتر میکند.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
یک متغیر double با مقدار 19.99 تعریف کنید. سپس آن را به صورت دستی به int تبدیل کرده و مقدار حاصل را چاپ کنید.
public class Main {
public static void main(String[] args) {
double price = 19.99;
int result = (int) price;
System.out.println(result);
}
}
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.