نماد سایت امپراطوری من

جاوا از ابتدا، بخش هفتم

تقدم عملگر ها

در انجام محاسبات می توان از بیش از دو عدد استفاده کرد. اما باید حواستان به تقدم عملگرهایی که استفاده می کنید باشد. با مثالی به شرح این بحث می پردازیم:

first_number=100;
second_number=75;
third_number=25;
answer=first_number - second_number + third_number;

اگر محاسبات را از چپ به راست انجام دهیم، ابتدا ۷۵-۱۰۰ محسابه شده که حاصل ۲۵ است. سپس عدد ۲۵ با ۲۵ قبل جمع شده و ۵۰ به دست می آید. ولی اگر منظور ما این نبود چطور؟ یعنی  اگر می خواستیم ابتدا عدد دوم و سوم جمع شده(۲۵+۷۵) و سپس از عدد اول کم شود.(۱۰۰-۱۰۰) که حاصل عدد صفر خواهد بود. برای این که به جاوا اعلام کنید که قصد انجام چنین کاری را دارید، باید از پرانتز استفاده کنید. پس برای حالت اول ایگونه می نویسیم:

answer=(first_number - second_number) + third_number;

و برای حالت دوم نیز اینگونه می نویسیم:

answer=first_number - (second_number + third_number);

حالا جمع و ضرب را بررسی می کنیم:

کد نوشته شده برای محاسبه در قسمت قبل را اینگونه بنوسید و برنامه را اجرا کنید و نتیجه را ببینید:

answer=first_number + second_number * third_number;

همانطور که می بینید پرانتزها را حذف کرده ایم. شاید فکر می کردید که جاوا ابتدا عدد اول و دوم را جمع و سپس در عدد سوم ضرب می کند. اما با دیدن جواب بعد از اجرا می بینید که اینگونه نیست. علت به وجود آمدن چنین اتفاقی تقدم عملگر(Operator Precedence) است. برخی از عملگر ها برای جاوا نسبت به برخی دیگر از اولویت بیشتری برخوردار هستند. برای مثال در همین مثال قبل چون جاوا ضرب را نسبت به جمع مقدم تر می داند، ابتدا عدد دوم و سوم را در هم ضرب کرده و سپس حاصل را با عدد اول جمع می کند. یعنی در اصل این کار را انجام می دهد:

answer=first_number + (second_number * third_number);

اگر می خواهید به طور دیگری محاسبات را انجام دهد باید با پرانتز گذاری به جاوا اعلام کنید:

answer=(first_number + second_number) * third_number;

در این صورت ابتدا عدد اول با عدد دوم جمع شده و سپس حاصل جمع آنها در عدد سوم ضرب می شود. تقسیم هم همانند ضرب، اولویت بیشتری نسبت به جمع و تفریق دارد. برای مثال کد مثال قبل را بدین صورت بنویسید و برنامه را اجرا کنید:

answer=first_number + second_number / third_number;

حاصل عدد ۱۰۳ خواهد بود چون ابتدا عدد دوم تقسیم بر عدد سوم می شود(۷۵/۲۵)، سپس عدد اول(۱۰۰) با حاصل تقسیم(۳) جمع می شود. حالا پرانتز ها را اضافه کنید:

answer=(first_number + second_number) / third_number;

این بار حاصل، عدد ۷ خواهد بود. زیرا ابتدا عدد اول و دوم جمع شده و سپس تقسیم بر عدد سوم می شود.

پس فهمیدیم که عملگر های ضرب و تقسیم، نسبت به هم تقدم ندارند ولی نسبت به عملگر های جمع و تفریق اولویت بیشتری دارند.

خروج از نسخه موبایل