در جلسه قبل ما انواع متعیرها و نوع های داده ای رو در جاوا توضیح دادیم و اما تعریف متغیر ها بر اساس حق دسترسی که در برنامه بهشون می تونیم داشته باشیم به 3 صورت می باشد. 1- متغیرهای محلی local 2- متغیرهای نمونه instance 3- متغیرهای ثابت کلاس class/static
متغیرهای محلی به متغیرهایی گفته می شود که داخل یک متد یا سازنده و یا داخل یک بلوک مشخص تعریف کنیم متغیرهایی که به این صورت تعریف می شوند فقط در داخل همون بازه اعتبار دارند .
این نوع متغیر ها داخل کلاس و خارج از همه متدهای که داخل اون کلاس هست تعریف می شنوند طوری که تمامی متدهای های داخل اون کلاس می تونن بهش دسترسی داشته باشن و اگر به صورت public تعریف بشوند حتی از کلاس های دیگر نیز می توان بهش دسترسی داشت
public class Main {
// متغیرهای نمونه
private int aa = 5;
// متغیر نمونه با دسترسی عمومی
public double db = 145.22;
}
// متغیرهای نمونه
private int aa = 5;
// متغیر نمونه با دسترسی عمومی
public double db = 145.22;
}
این نوع متغیر های نیز مثل متغیرهای نمونه تعریف می شوند و در تمام موارد با آن ها یکی هستند به جز اینکه در تعریف متغیرهای ثابت کلاسی قبل از تعریف متغیر از کلمه کلیدی static استفاده می کنیم
public class Main {
// متغیرهای کلاسی
private static int in = 10;
// متغیر ثابت کلاسی با دسترسی عمومی
public static double db = 254.42;
}
// متغیرهای کلاسی
private static int in = 10;
// متغیر ثابت کلاسی با دسترسی عمومی
public static double db = 254.42;
}
ثابت ها همان متغیرهایی هستن که مقدارشان قابل تغییر نیست یا به صورت دیگر برای ذخیره مقادیری که مقدارشان هیچ وقت تغییر نخواهد کرد باید آن را بصورت ثابت یا constant تعریف کرد. برای تعریف ثابت در جاوا کافی است که به ابتدای فرایند تعریف متغییر کلمه کلیدی final را اضافه کنیم مانند مثال زیر
گر تجربه برنامه سازی داشته باشید حتما می دونید که تخصیص یک نوع مقدار به متغیری از نوع دیگر نسبتا متداول است. اگر آن دو نوع سازگار باشند در آن صورت جاوا عمل تبدیل را به صورت خودکار انجام خواهد داد اما همیشه تمام داده های مختلف سازگار نیستند و از این رو همه تبدیلات به طور ضمنی ممکن نیست. به عنوان نمونه هیچ تبدیلی برای double به byte تعریف نشده است.
خوشبختانه باز هم امکان کسب رویه های تبدبل برای انواع داده های ناسازگار وجود دارد برای انجام این کار باید از Casting استفاده کنید. تبدیل صریح بین انواع داده های ناسازگار.
خوشبختانه باز هم امکان کسب رویه های تبدبل برای انواع داده های ناسازگار وجود دارد برای انجام این کار باید از Casting استفاده کنید. تبدیل صریح بین انواع داده های ناسازگار.
تبدیل خودکار جاوا
وقتی یک نوع داده به متغیری از نوع دیگر تخصیص می یابد؛ چنانچه شرایط ذیل مهیا باشد عمل تبدیل خودکار انجام می شود:
آن دو نوع سازگار باشند
نوع مقصد بزرگتر از نوع مبدا باشد
هرگاه این دو شرط برقرار باشد نوعی “تبدیل همراه با بزرگ سازی” widening conversion انجام می شود. مثلا نوع int همیشه برای نگهداری مقادیر byte به اندازه کافی بزرگ است بنابراین استفاده از عبارتcasting به صورت صریح ضرورت ندارد.
برای تبدیلات همراه با بزرگ سازی؛ انواع داده های عددی از جمله اعداد صحیح و اعشاری با ممیز شناور با یکدیگر سازگار هستند اما انواع داده های عددی با char یا Boolean سازگار نیستند. همچنین char و Boolean با هم نیز سازگار نیستند.
وقتی یک نوع داده به متغیری از نوع دیگر تخصیص می یابد؛ چنانچه شرایط ذیل مهیا باشد عمل تبدیل خودکار انجام می شود:
آن دو نوع سازگار باشند
نوع مقصد بزرگتر از نوع مبدا باشد
هرگاه این دو شرط برقرار باشد نوعی “تبدیل همراه با بزرگ سازی” widening conversion انجام می شود. مثلا نوع int همیشه برای نگهداری مقادیر byte به اندازه کافی بزرگ است بنابراین استفاده از عبارتcasting به صورت صریح ضرورت ندارد.
برای تبدیلات همراه با بزرگ سازی؛ انواع داده های عددی از جمله اعداد صحیح و اعشاری با ممیز شناور با یکدیگر سازگار هستند اما انواع داده های عددی با char یا Boolean سازگار نیستند. همچنین char و Boolean با هم نیز سازگار نیستند.