استفاده از عملگرهای جاوا

درس “استفاده از عملگرهای جاوا” به بررسی جامع و عمیق انواع عملگرها در زبان برنامهنویسی Java میپردازد. در این درس، مفاهیمی نظیر عملگرهای انتساب (مانند =
)، عملگرهای ریاضی (نظیر +
, -
, *
, /
, %
)، عملگرهای مقایسهای (مانند ==
, !=
, >
, <
)، عملگرهای منطقی (&&
, ||
, !
) و عملگرهای بیتی (نظیر &
, |
, ^
, ~
, <<
, >>
, >>>
) مورد بحث قرار میگیرند. همچنین، عملگرهای افزایشی و کاهشی و عملگرهای ترکیبی (مانند +=
, -=
, *=
) برای سادهسازی عملیات بر روی متغیرها تشریح شدهاند. هدف این درس، آشنایی کامل با نحوه عملکرد و کاربرد این عملگرها در سناریوهای واقعی برنامهنویسی است تا دانشجویان بتوانند کدی بهینه، خوانا و قابل توسعه بنویسند. با درک دقیق این مفاهیم، شما به مهارتی اساسی در حل مسائل و پیادهسازی منطق در برنامهنویسی جاوا دست پیدا خواهید کرد.
من قبلاً از یک تعداد از عملگرهای جاوا در مثال هایم استفاده کردم، ولی حالا میخواهم بیشتر وارد جزییات بشوم و بطور کامل برای شما توضیح شان بدهم.
سینتکس و قوائد دستوری جاوا بر اساس زبان سی هست و یک زبان مبتنی و به سبک C یا همان C-style هست.
و عملگرهایی که در این زبان استفاده میشود، همان عملگرهایی هستند که در بیشتر زبانهای مبتنی بر سی، از جمله سی، سی پلاس پلاس، سی شارپ، جاوا اسکریپت و غیره، هستند.
نوع های متفاوتی از عملگرها وجود دارد.
عملگرهای مساوی برای مقایسه دو مقدار با هم استفاده میشوند، عملگرهای انتسابی هم که از اسم شان مشخص است چه کاری انجام میدهند و درواقع میآیند مقادیر را به متغیرها تخصیص میدهند و همینطور عملگرهای ریاضی و عملگرهای منطقی رو داریم.
در اینجا من بیشتر عملگرهای انتساب و ریاضی رایج رو برای شما آوردم.
زمانی که شما یک متغیر رو در جاوا اعلان میکنید، همیشه عبارت تان را با نام نوع داده شروع میکنید و در ادامه هم نام اون متغیر رو تایپ میکنید. ولی مجبور نیستید که همانجا برای آن مقدارش را تعیین کنید. همیشه یک مقدار پیش فرض برای متغیر شما در نظر گرفته میشود، حالا چه متغیرتان از جنس نوع داده های اولیه باشد و یا یک شیء باشد.
ولی اگر بخواهید مقداری رو برای متغیرتان تعریف کنید و به آن اختصاص بدهید، باید از یک کاراکتر مساوی به عنوان عملگر انتساب استفاده کنید. به طوریکه نوع داده و نام متغیر در سمت چپ عبارت شما قرار میگیرند، و مقدار مورد نظر در سمت راست.
این موردی که گفتم یک عملیات انتساب ساده هست، البته میتوانید عملیات ریاضی رو به عنوان انتساب یک مقدار انجام بدهید. به عنوان مثال، دراین عبارت ها ازاعمال عملگرهای ریاضی روی نوع داده های صحیح برای عمل انتساب استفاده شده.
عملگر + برای عمل جمع، عملگر – برای عمل تفریق، عملگر * برای عمل ضرب و عملگر اسلش برای عمل تقسیم.
همچنین یک عملگر دیگر هم داریم که با کاراکتر درصد مشخص میشود و عملیات باقیمانده تقسیم رو انجام میدهد و در بعضی از زبان ها با عنوان modulus شناخته میشود و به اختصار به آن میگویند عملگر mod.
اینجا در این اسلاید هم یکسری کارهای دیگر که میتوانید با عملگرهای ریاضی و انتساب انجام بدهید برای شما آوردم.
با یک متغیر اینتیجر با مقدار 10 شروع میکنم.
میتوانید با استفاده از این عملگرها این متغیر رو یک واحد بهش اضافه یا ازش کم کنید، یعنی با نوشتن a ++ یا a –.
و این عملگر هم میتواند قبل از نام متغیر و هم بعد از نام متغیر قرار بگیرد. در مورد تفاوت این دو مورد یعنی قرار گرفتن عملگر قبل یا بعد از نام متغیر، در چند لحظه آتی توضیح میدهم.
همچنین میتوانید یک مقداری رو به متغیرتان اضافه و یا ازش کم کنید؛ با استفاده از عملگرهای =+ به معنی انتساب مقدار و اجرای عملیات ریاضی به صورت همزمان و عملگر =- هم به همین صورت برای عملیات منها، همینطور عملگر های =/ و =* هم به همین شکل کار میکنند.
به عنوان مثال عبارت intval +=5; خلاصه شده عبارت intval = intval + 5; هست و از این عملگرها برای کوتاه شدن کدنویسی استفاده میشود.
حالا، میخواهم در مورد مکان قرار گیری این عملگرهای اضافه شدن و کم شدن قبل و بعد از نام متغیر توضیح بدهم.
یکبار دیگر با یک متغیر اینتیجر با مقدار 10 شروع میکنم.
اگر عملگر ++ رو بعد از نام متغیر قرار بدهید، به آن انتساب postfix یا پسوندی میگویند.
یعنی شما یک متغیر رو مقداردهی میکنید وسپس عملیات ریاضی رو روی آن انجام میدهید.
در این مثال من یک خروجی از این عبارت intvalue++ گرفتم و چیزی که در کنسول چاپ میشود، کاملاً میتواند منظور من رو به شما نشان بدهد. درواقع اول میآید مقدار متغیر intvalue رو در خروجی چاپ میکند و سپس یک واحد به آن اضافه میکند؛ یعنی بعد از عمل چاپ شدن متغیر در خروجی مقدار جدید متغیر یک واحد اضافه میشود و برابر 11 میشود.
حالا اگر عملگر رو بردارید و قبل از نام متغیر قرارش بدهید، به آن انتساب prefix یا پیشوندی میگویند.
و در این حالت ابتدا عملیات ریاضی صورت میگیرد و بعد متغیر مقدار جدیدش را میگیرد.
و اگر از این عبارت ++intvalue خروجی بگیرم، میبینید که عدد نشان داده شده در خروجی و مقدار جدید متغیر با هم برابر و برابر 11 هستند.
عملگرهای مساوی همچنین برای مقایسه دو مقدار با هم استفاده میشوند.
عملگر == که با نام عملگر تساوی از آن یاد میشود، زمانی که بخواهیم مقدار واقعی دو متغیر از جنس نوع داده های اولیه رو با هم مقایسه کنیم از این عملگر == استفاده میکنیم. یعنی درست برای متغیرهای مرجع؛ همان متغیرهای از جنس اشیاء، یعنی متغیرهایی که به اشیاء اشاره دارند، اگر از این عملگر استفاده بشود، جاوا مقایسه رو به این صورت انجام میدهد که آیا اون دو متغیر به یک شیء اشاره دارند یا نه، نه اینکه لزوماً مقدارشان با هم برابر باشد.
عملگر مخالف یا عدم تساوی هم به شکل علامت ! و = هست. بعضی از توسعه دهنده های جاوا دوست دارند که به علامت تعجب بگویند عملگر بنگ، ولی همان معنی مخالف یا عدم تساوی رو میدهد و قوانین آن هم عین قوانین عملگر تساوی هست. برای متغیرهای از جنس نوع داده های اولیه با مقادیرشان ارزیابی میشوند و برای متغیرهای مرجع هم اشاره میشود به یکسان بودن شیء شان.
علاوه بر عملگرهای == وعلامت ! و =، یا همان NOT مساوی همچنین عملگرهای بزرگتر، کوچکتر، بزرگترمساوی، یا کوچکتر مساوی و یک عملگر خاصی با نام “instanceof,” هم داریم. که این عملگر “instanceof,” میپرسد که آیا یک شیء، یک نمونه از یک کلاس خاص هست یا نه.
برای مثال، اگر من یک رشته یا حتی یک String با نام s داشته باشم، و یک شرط “s instanceof java.lang.String,”هم داشته باشم که یعنی آیا s نمونه ای از کلاس java.lang.String هست یا نه. که بدانید java.lang.String یک نام واجد شرایط برای این کلاس هست. پس عبارت شرطی من برابر true هست، و میتوانم بگویم که بله این متغیر یک رشته هست.
برای مقایسه مقادیر رشته ای یک استثناء و یک قانون خاص وجود دارد. رشته ها نمیتوانند در یک شرایط مطمئنی با استفاده از عملگرهای تساوی با همدیگر مقایسه بشوند. البته در بعضی شرایط جواب میدهد، ولی نه همیشه. و در مورد جزییات این موضوع در ادامه این دوره آموزشی بیشتر توضیح میدهم.
ولی الان فقط این رو بگویم که اگر بخواهید مقادیر رشته ای رو با هم مقایسه کنید، نباید از عملگرهای تساوی و مخالف استفاده کنید. به جایش باید از متد equals کلاس های String استفاده کنید. یک نسخه از این متد که به کوچک و بزرگی حروف هم حساس است وجود دارد، که همین است، و یک نسخه دیگر هم هست که مقادیر رو با هم مقایسه میکند بدون حساسیت نسبت به کوچک و بزرگی حروف و جزئیات مربوط به این نسخه رو هم در ادامه دوره ملزومات جاوا توضیح خواهم داد.
نتیجه این قطعه کد میشود They match!. چونکه مقدارهای s1 و s2 با هم برابرند و عبارت شرطی هم دارد میگوید در صورتی که مقدارهای s1 و s2 با هم برابرن چاپ بشود They match! و در غیر اینصورت هم چاپ بشود no match!.
در آخر باید بگویم که ما یکسری عملگرهای منطقی هم داریم. این عملگری که از دو تا علامت & تشکیل شده همان عملگر And هست، و این کاراکتر || هم عملگر Or هست، و میتوانید از این دو عملگر برای ترکیب تو عبارت شرطی استفاده کنید و یک نتیجه دلخواه بگیرید و بعد یک عملگر سه تایی هم وجود دارد شبیه این:
اینجا دارید یک شرط بولین رو بررسی میکنید و بعد، بعد از علامت سؤال، مقداری رو که میخواهید در صورت صحیح بودن شرط در متغیر قرار بگیرد رو دارید، و بعد هم بعد از یک علامت: مقداری رو قرار میدید که در صورت عدم صحیح بودن شرط میخواهید در متغیرتان قرار بگیرد. به طور خلاصه این عبارت رو توضیح میدهم. دقت کنید این عبارت دارد میگوید رشته s برابر باشد با مقدار trueValue اگر شرط condition برقرار است و در غیر اینصورت اگر شرط condition برقرار نیست مقدار s برابر بشود با falseValue. در واقع یکجور خلاصه نویسی برای نوشتن عبارت شرطی if هست. بعضی از توسعه دهنده ها به این روش کدنویسی تمایل بیشتری دارند. ولی من تمایلی به استفاده از این روش ندارم و ترجیح میدهم از عبارت طولانی تر if-then استفاده کنم، چون فکر میکنم اینطوری بعداً خواندن و بخاطر سپردن کد راحتتر است. ولی خب این عبارت هم کاملاً کار میکند و خیلی هم بین دنیا برنامه نویس های جاوا محبوبیت دارد.
خب؛ در این بخش از آموزش یک خلاصه ای از رایجترین عملگرهای قابل استفاده در جاوا رو بیان کردم. یک تعدادی از عملگرهای دیگر هم وجود دارند که با عنوان عملگرهای bitwise یا بیتی از آنها یاد میشود، ولی کمتر استفاده میشوند، و به شما توصیه میکنم به اسناد و اطلاعات Help جاوا سری بزنید و بطور کامل درمورد همه عملگرهای در دسترس در جاوا مطالعه کنید.