این نوع متغیر ها داخل کلاس و خارج از همه متدهای که داخل اون کلاس هست تعریف می شنوند طوری که تمامی متدهای های داخل اون کلاس می تونن بهش دسترسی داشته باشن و اگر به صورت 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 با هم نیز سازگار نیستند.
انجام casting برای انواع داده های ناسازگار
گفتیم که برای نوع هایی که با هم سازگار نیستند نمی توانیم از تبدیلات خودکار(با وجود مفید بودنشان) استفاده کنیم. مثلا اگر بخواهیم یک مقدارint را به مقدارbyte تخصیص بدهیم؛ این تبدیل به طور خودکار انجام نمی شود زیرا byte از int کوچکتر است . این نوع تبدیل گاهی “تبدیل همراه با کوچک سازی” نامیده می شود ؛چرا که مقدار int به طور صریح کوچکتر می شود تا در مقصد قابل ذخیره باشد. برای آنکه تبدیل دو نوع ناسازگار را انجام دهید باید ازcasting استفاده کنید ؛ یعنی نبدیل صریح انواع داده ها
گفتیم که برای نوع هایی که با هم سازگار نیستند نمی توانیم از تبدیلات خودکار(با وجود مفید بودنشان) استفاده کنیم. مثلا اگر بخواهیم یک مقدارint را به مقدارbyte تخصیص بدهیم؛ این تبدیل به طور خودکار انجام نمی شود زیرا byte از int کوچکتر است . این نوع تبدیل گاهی “تبدیل همراه با کوچک سازی” نامیده می شود ؛چرا که مقدار int به طور صریح کوچکتر می شود تا در مقصد قابل ذخیره باشد. برای آنکه تبدیل دو نوع ناسازگار را انجام دهید باید ازcasting استفاده کنید ؛ یعنی نبدیل صریح انواع داده ها
در تصویر بالا چندین مثال از تبدیل های سازگار و ناساز گار (ضمنی و صریح) زده شده است به تبدیل های ضمنی در اصطلاح impilcit casting و به تبدیل های ناسازگار در اصطلاح explicit casting می گویند
۱- عبارتها (expression): تاکنون قطعاً عبارتهای ریاضی فراوانی را دیدهاید. برای مثال میدانید که ۲+۲ یک عبارت ریاضی است. در زبانهای برنامه نویسی هم چنین عبارتهایی وجود دارند. اگر بخواهیم دقیقتر باشیم باید بگوییم که هر جملهای که دارای یک «ارزش» باشد، یک «عبارت» یا expression است که البته همانطور که حدس زدهاید یکی از رایجترین انواع عبارتها، عبارتهای ریاضی است. چندین عبارت ریاضی:
int x = 5;
int y = x;
int z = x * y;
int x = 5;
int y = x;
int z = x * y;
همانطور که میدانید در اغلب عبارتهای ریاضی ما از نمادهایی مانند * (ضرب)، + (جمع) و مانند آن استفاده میکنیم. در اصطلاح برنامه نویسی به این نمادهای ویژه، عملگر (Operator) میگویند. عملگرها نمادهایی هستند که برای محاسبات ریاضی و منطقی (logical) از آنها استفاده میشود
۲- عملگرهای ریاضی (Arithmetic Operators): برای انجام محاسبات ریاضی در جاوا (java) از پنج عملگر جمع (+)، تفریق (-)، ضرب (*)، تقسیم (/) و باقیمانده تقسیم (%) استفاده میکنیم
۳- عملگر انتساب (=): معمولاً همه با عملگر انتساب (Assignment Operator) آشنایی داریم. کار اصلی این عملگر نسبت دادن مقدار عبارت سمت راست (عملوند راست) به متغیر (عملوند) سمت چپ خود است. با توجه به تعریف بالا عملیات نسبت دادن یک مقدار به یک متغیر خود یک عبارت ریاضی است زیرا دارای مقدار است. همین خاصیت باعث میشود که بتوانیم چندین عملگر انتساب را زنجیروار به هم متصل نموده و چندین عبارت را در یک عبارت سادهتر نوشت. به مثال زیر دقت کنید:
int x = y = z = 10;
int x = y = z = 10;