دوره‌ها / JAVA / تبدیل نوع (Java Type Casting)

تبدیل نوع (Java Type Casting)

15 دقیقه Article

تبدیل نوع (Type Casting): تغییر هویت داده‌ها 🔄🎭

تبدیل نوع زمانی اتفاق می‌افتد که بخواهید مقدارِ یک متغیر از یک نوع داده را به نوعِ دیگری تبدیل کنید. در جاوا دو نوع تبدیل داریم.

۱. تبدیل خودکار (Widening Casting)

این تبدیل زمانی است که یک نوعِ کوچک‌تر به یک نوعِ بزرگ‌تر تبدیل می‌شود. چون داده‌ای از دست نمی‌رود، جاوا خودش این کار را انجام می‌دهد:

ترتیب: byte -> short -> char -> int -> long -> float -> double

{code_block('int myInt = 9;\ndouble myDouble = myInt; // تبدیل خودکار انتگر به دابل\nSystem.out.println(myDouble); // خروجی: 9.0')}

۲. تبدیل دستی (Narrowing Casting)

این تبدیل زمانی است که یک نوعِ بزرگ‌تر را در یک نوعِ کوچک‌تر می‌ریزیم. احتمال از دست رفتن داده وجود دارد، لذا باید به صورت دستی (با پرانتز) انجام شود:

ترتیب: double -> float -> long -> int -> ...

{code_block('double myDouble = 9.78d;\nint myInt = (int) myDouble; // تبدیل دستی به انتگر\nSystem.out.println(myInt); // خروجی: 9 (بخش اعشاری حذف شد!)')}
خطر از دست رفتن داده: توجه داشته باشید که در Narrowing، محاسبات گرد نمی‌شوند، بلکه بخش اضافی کاملاً "بریده" (Truncated) می‌شود.

چرا به Casting نیاز داریم؟

فرض کنید می‌خواهید میانگین نمرات را حساب کنید. مجموع نمرات (Integer) است اما نتیجه باید اعشاری (Double) باشد. اینجا باید Casting انجام دهید.

Casting رشته‌ها: توجه کنید که تبدیلِ یک عددِ داخلِ رشته به عدد واقعی (مثلاً "123" به 123) با Casting انجام نمی‌شود، بلکه نیاز به متدهای مخصوصی مثل Integer.parseInt() دارد.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: عمیق‌تر در دنیای جاوا 🛠️💎

در این بخش، به نکاتی می‌پردازیم که در سطح حرفه‌ای و مصاحبه‌های کاری بسیار مهم هستند.

۱. مدیریت حافظه (Memory Management)

در جاوا، داده‌ها در دو بخش از حافظه ذخیره می‌شوند: Stack و Heap. انواعِ داده اولیه (Primitives) معمولاً در Stack ذخیره می‌شوند که سرعت دسترسی به آن‌ها بسیار بالاست. اشیاء و آرایه‌ها در Heap ذخیره می‌شوند که حجم بیشتری دارد اما مدیریت آن توسط Garbage Collector انجام می‌شود. درک این تفاوت، کلید اصلی برای نوشتن برنامه‌های بهینه است.

۲. مفاهیم امنیت در سطح زبان

جاوا یکی از امن‌ترین زبان‌هاست چون اجازه دسترسی مستقیم به آدرس‌های فیزیکی حافظه (مانند اشاره‌گرها در C++) را نمی‌دهد. مضاف بر این، وجود Bytecode Verifier قبل از اجرا، تضمین می‌کند که کدهای مخرب یا نامعتبر اجرا نشوند.

۳. کدهای تمیز (Clean Code)

در پروژه‌های تیمی، خوانایی کد مهم‌تر از هوشمندانه بودن آن است. همیشه از نام‌های معنادار برای متغیرها استفاده کنید (مثلاً به جای a از userAge استفاده کنید). همچنین رعایتِ CamelCase و استفاده درست از کامنت‌ها، نگهداری پروژه را در آینده بسیار ساده‌تر می‌کند.

نکته پایانی: یادگیری یک زبان فقط یادگیری دستورات آن نیست؛ بلکه یادگیریِ طرز فکر و معماریِ آن اکوسیستم است. جاوا با ساختارِ منضبط خود، ذهن شما را برای مهندسی نرم‌افزار به سبکِ صحیح تربیت می‌کند.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تبدیل اعشار به صحیح Easy
سوال تمرین

یک متغیر double با مقدار 19.99 تعریف کنید. سپس آن را به صورت دستی به int تبدیل کرده و مقدار حاصل را چاپ کنید.

پاسخ تمرین
JAVA
public class Main {
  public static void main(String[] args) {
    double price = 19.99;
    int result = (int) price;
    System.out.println(result);
  }
}

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.