Programming? – Telegram
Programming?
11.9K subscribers
373 photos
645 videos
978 files
511 links
🏅Channel privileges

🎗Ninth year of operation
🎗Completely specialized members
🎗Transmitter in channel automation
🎗, ...

🎯 second channel Programming books 👇
@topbookit

🎯 third channel laptop👇
@sysline


👨🏻‍💻Admin channels : @coderme
Download Telegram
گر تجربه برنامه سازی داشته باشید حتما می دونید که تخصیص یک نوع مقدار به متغیری از نوع دیگر نسبتا متداول است. اگر آن دو نوع سازگار باشند در آن صورت جاوا عمل تبدیل را به صورت خودکار انجام خواهد داد اما همیشه تمام داده های مختلف سازگار نیستند و از این رو همه تبدیلات به طور ضمنی ممکن نیست. به عنوان نمونه هیچ تبدیلی برای double به byte تعریف نشده است.

خوشبختانه باز هم امکان کسب رویه های تبدبل برای انواع داده های ناسازگار وجود دارد برای انجام این کار باید از Casting استفاده کنید. تبدیل صریح بین انواع داده های ناسازگار.
تبدیل خودکار جاوا

وقتی یک نوع داده به متغیری از نوع دیگر تخصیص می یابد؛ چنانچه شرایط ذیل مهیا باشد عمل تبدیل خودکار انجام می شود:

آن دو نوع سازگار باشند
نوع مقصد بزرگتر از نوع مبدا باشد

هرگاه این دو شرط برقرار باشد نوعی “تبدیل همراه با بزرگ سازی” widening conversion انجام می شود. مثلا نوع int همیشه برای نگهداری مقادیر byte به اندازه کافی بزرگ است بنابراین استفاده از عبارتcasting به صورت صریح ضرورت ندارد.

برای تبدیلات همراه با بزرگ سازی؛ انواع داده های عددی از جمله اعداد صحیح و اعشاری با ممیز شناور با یکدیگر سازگار هستند اما انواع داده های عددی با char یا Boolean سازگار نیستند. همچنین char و Boolean با هم نیز سازگار نیستند.
انجام casting برای انواع داده های ناسازگار

گفتیم که برای نوع هایی که با هم سازگار نیستند نمی توانیم از تبدیلات خودکار(با وجود مفید بودنشان) استفاده کنیم. مثلا اگر بخواهیم یک مقدارint را به مقدارbyte تخصیص بدهیم؛ این تبدیل به طور خودکار انجام نمی شود زیرا byte از int کوچکتر است . این نوع تبدیل گاهی “تبدیل همراه با کوچک سازی” نامیده می شود ؛چرا که مقدار int به طور صریح کوچکتر می شود تا در مقصد قابل ذخیره باشد. برای آنکه تبدیل دو نوع ناسازگار را انجام دهید باید ازcasting استفاده کنید ؛ یعنی نبدیل صریح انواع داده ها
در تصویر بالا چندین مثال از تبدیل های سازگار و ناساز گار (ضمنی و صریح) زده شده است به تبدیل های ضمنی در اصطلاح impilcit casting و به تبدیل های ناسازگار در اصطلاح explicit casting می گویند
عملگرها و اولویت‌ها :
۱- عبارت‌ها (expression): تاکنون قطعاً عبارت‌های ریاضی فراوانی را دیده‌اید. برای مثال می‌دانید که ۲+۲ یک عبارت ریاضی است. در زبان‌های برنامه نویسی هم چنین عبارت‌هایی وجود دارند. اگر بخواهیم دقیق‌تر باشیم باید بگوییم که هر جمله‌ای که دارای یک «ارزش» باشد، یک «عبارت» یا expression است که البته همانطور که حدس زده‌اید یکی از رایج‌ترین انواع عبارت‌ها، عبارت‌های ریاضی است. چندین عبارت ریاضی:

int x = 5;
int y = x;
int z = x * y;
همانطور که می‌دانید در اغلب عبارت‌های ریاضی ما از نمادهایی مانند * (ضرب)، + (جمع) و مانند آن استفاده می‌کنیم. در اصطلاح برنامه نویسی به این نمادهای ویژه، عملگر (Operator) می‌گویند. عملگرها نمادهایی هستند که برای محاسبات ریاضی و منطقی (logical) از آن‌ها استفاده می‌شود
۲- عملگرهای ریاضی (Arithmetic Operators): برای انجام محاسبات ریاضی در جاوا (java) از پنج عملگر جمع (+)، تفریق (-)، ضرب (*)، تقسیم (/) و باقیمانده تقسیم (%) استفاده می‌کنیم
۳- عملگر انتساب (=): معمولاً همه با عملگر انتساب (Assignment Operator) آشنایی داریم. کار اصلی این عملگر نسبت دادن مقدار عبارت سمت راست (عملوند راست) به متغیر (عملوند) سمت چپ خود است. با توجه به تعریف بالا عملیات نسبت دادن یک مقدار به یک متغیر خود یک عبارت ریاضی است زیرا دارای مقدار است. همین خاصیت باعث می‌شود که بتوانیم چندین عملگر انتساب را زنجیروار به هم متصل نموده و چندین عبارت را در یک عبارت ساده‌تر نوشت. به مثال زیر دقت کنید:
int x = y = z = 10;
4- عملگرهای افزایشی و کاهشی: در برنامه نویسی جاوا بسیاری مواقع اتفاق می‌افتد که می‌خواهیم مقدار یک متغیر را یک واحد کاهش یا یک واحد افزایش دهیم. برای این کار به سادگی می‌توانیم از هر کدام از عبارت‌های زیر استفاده کنیم:
int x = 20;
x = x + 1;
// or
x += 1;

اما در زبان جاوا دو عملگر خاص برای این منظور به وجود آمده‌اند: عملگر افزایش یکانی (++) و عملگر کاهش یکانی (–). این دو عملگر را می‌توان بدون فاصله قبل یا بعد از متغیر قرار داد تا یکی به مقدار متغیر افزوده شده یا یکی از مقدار متغیر کم شود. به مثال‌های زیر دقت کنید:
int x = 20;

x++; // x = x + 1
// or
++x; // x = x + 1
...
x--; // x = x - 1
// or
—x; // x = x - 1
5- عملگرهای مقایسه‌ای: جاوا عملگرهایی برای مقایسه متغیرها (Variables)، متغیرها و متغیرهای لفظی (Literals) و سایر انواع داده‌ها در برنامه دارد. حاصل این عملگرها یک متغیر بولین است که همواره دارای مقدار true یا false است boolean hip;
int age = 32;

// (1)
hip = (age < 25);

// (2)
hip = ( age == 32 );

// (3)
hip = (age != 32 );
۶- عملگرهای منطقی: عبارت‌هایی که حاصل آن‌ها یک مقدار بولی (boolean) است، می‌توانند با هم ترکیب شده و عبارت‌های پیچیده‌تری بسازند. برای ترکیب این عبارت‌ها می‌توان از عملگرهای منطقی استفاده کرد. این عملگرها عبارتند از «و» (AND)، «یا» (OR)، «مخالف» (NOT) و «یای انحصاری» (XOR).
boolean warning = ( grade > 10 ) && ( grade < 12 );
اولویت عملگرها : در یه عبارت محاسباتی که متشکل از عملگرها و عملوندهای مختلف می باشد محاسبات طبق اصول و اولویت عملگرها انجام می شود برای مثال برای اینکه بدانیم در محاسبه عبارت زیر کدام عملگر الویت بالایی در اجرا شدن دارد
int x = 5 * (25 + 2) / 3;
برای درک اولویت عملگرها در اجرای یک عبارت مانند عبارت بالا باید به ترتیب آیتم های زیر عمل کرد
1 ()
2 ! ~ ++ — sizeof
3 * / %
4 + -
5 « »
6 < <= > >=
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?
14 = += -= *= /= %=
15 ,