سرفصل‌های آموزشی
آموزش جاوا
آشنایی با نحوۀ به‌کارگیری اپراتورها در زبان برنامه‌نویسی جاوا

آشنایی با نحوۀ به‌کارگیری اپراتورها در زبان برنامه‌نویسی جاوا

در این آموزش قصد داریم تا با نحوۀ استفاده از عملگرها در زبان برنامه‌نویسی جاوا آشنا شده و ببینیم که چگونه می‌توان برخی عملیات ریاضیاتی نظیر جمع، تفریق و غیره را روی داده‌های مورد نظر اِعمال کرده و پردازش‌های مورد نیاز را روی آن‌ها انجام داد به علاوه اینکه به بررسی نحوۀ اولویت‌بندی اپراتورها خواهیم پرداخت.

برای شروع، در ابتدا با به‌کارگیری دیتا تایپ int متغیری تحت عنوان studentNumber تعریف کرده و مقداری معادل عدد 121 را به آن اختصاص می‌دهیم که برای این منظور داریم:

int studentNumber = 121;

در ادامۀ آموزش برخی از رایج‌ترین عملگرهای ریاضیاتی را معرفی کرده و نحوۀ پیاده‌سازی هر یک به منظور اِعمال روی مقدار منتسب به متغیر studentNumber در دستور فوق را بررسی می‌نماییم.

اپراتور Plus

با توجه به مقدار اختصاص‌یافته به متغیر studentNumber معادل عدد 121، اگر بخواهیم عددی مثل 10 را با مقدار منتسب به متغیر مذکور جمع کنیم، از اپراتور + استفاده می‌کنیم:

int studentNumber = 121;
studentNumber = studentNumber + 10;

در کد فوق، با به‌کارگیری نوع دادۀ int متغیری تحت عنوان studentNumber تعریف کرده و مقدار 121 را بدان منتسب کرده‌ایم و در ادامه با استفاده از اپراتور + عدد 10 را با 121 جمع کرده و نتیجۀ حاصل را مجدداً به متغیر studentNumber اختصاص داده‌ایم که بدین ترتیب مقدار جدید جایگزین مقدار پیشین می‌گردد. به علاوه، روش دیگری جهت افزودن یک مقدار به عدد اختصاص‌یافته به متغیر مذکور وجود دارد که منجر به کوتاهی و سادگی کد فوق می‌شود که برای این منظور دستور سطر دوم از مثال پیشین را به صورت زیر تغییر می‌دهیم:

int studentNumber = 121;
studentNumber += 10;

همان‌طور که ملاحظه می‌شود، در این روش، عدد 10 با مقدار منتسب به متغیر studentNumber معادل عدد 121 جمع شده و در نهایت نتیجۀ حاصل برابر با عدد 131 به متغیر studentNumber اختصاص داده می‌شود.

اپراتور Minus

چنانچه بخواهیم عدد 10 را از مقدار منتسب به متغیر در مثال قبل کم کنیم، اپراتور - را مورد استفاده قرار می‌دهیم که در مثال زیر نحوۀ اِعمال آن روی متغیر مذکور را آورده‌ایم:

int studentNumber = 121;
studentNumber = studentNumber - 10;

در دستور فوق عدد 10 از مقدار اختصاص‌یافته به متغیر studentNumber معادل عدد 121 کم شده و نتیجۀ حاصل جایگزین مقدار پیشینِ منتسب به این متغیر می‌گردد. همچنین به منظور ساده‌سازی سورس‌کد روش دیگری می‌توان مورد استفاده قرار داد که در مثال زیر نحوۀ پیاده‌سازی آن را بررسی می‌نماییم:

int studentNumber = 121;
studentNumber -= 10;

در این روش نیز شاهد خروجی مشابهی همچون روش اول هستیم و عدد 111 حاصل خواهد شد.

اپراتور Multiply

در ادامه، قصد داریم تا یک مقدار عددی را در مقدار اختصاص‌یافته به متغیر studentNumber ضرب کنیم که برای این منظور اپراتور * را به کار می‌گیریم که نحوۀ پیاده‌سازی آن به صورت زیر می‌باشد:

int studentNumber = 121;
studentNumber = studentNumber * 10;

در کد فوق، مقدار منتسب به متغیر studentNumber در عدد 10 ضرب شده و عدد به دست آمده مجدداً در متغیر مذکور ذخیره می‌شود. همچنین مشابه روش‌های پیشین و به منظور ساده‌سازی سورس‌کد، می‌توانیم به روش زیر نیز عمل نماییم:

int studentNumber = 121;
studentNumber *= 10;

نتیجۀ حاصل از ضرب مقدار اختصاص‌یافته به متغیر studentNumber برابر با عدد 1210 می‌باشد که جایگزین مقدار قبلیِ منتسب به متغیر مذکور شده و در آن ذخیره می‌گردد.

اپراتور Division

به منظور تقسیم مقدار اختصاص‌یافته به متغیر studentNumber بر عددی دلخواه می‌توانیم از اپراتور / استفاده نماییم که برای این منظور دستوری مانند زیر خواهیم داشت:

int studentNumber = 121;
studentNumber = studentNumber / 10;

در واقع، مقدار منتسب به متغیر studentNumber معادل عدد 121 بر عدد 10 تقسیم شده و عدد حاصل به متغیر مذکور اختصاص داده می‌شود (توجه داشته باشیم که مقدار حاصل از عملیات تقسیم در مثال فوق عدد 12.1 می‌باشد اما از آنجایی که جنس متغیر studentNumber از نوع دادۀ int تعریف شده است، مقادیر اعشاری را نمی‌تواند در خود ذخیره کند که از همین روی بخش اعشاری عدد حذف شده و فقط مقدار صحیح در آن ذخیره می‌شود.) به منظور ساده‌سازی سورس‌کد در رابطه با پیاده‌سازی اپراتور تقسیم نیز می‌توانیم مشابه روش‌های قبل عمل کرده و آن را به صورت زیر بر روی مقادیر عددی مورد نظر اِعمال کنیم:

int studentNumber = 121;
studentNumber /= 10;

نتیجۀ حاصل از دستورات فوق نیز مشابه روش قبل بوده و بخش صحیح حاصل از عملیات تقسیم در متغیر studentNumber ذخیره می‌شود.

آشنایی با مفاهیم Incrementing و Decrementing در زبان جاوا

مفاهیمی همچون Incrementing و Decrementing در زبان برنامه‌نویسی جاوا به ترتیب جهت افزایش و کاهش دادن یک واحد از مقدار عددی اختصاص‌یافته به متغیر مورد نظر به کار گرفته می‌شوند که با استفاده از آن‌ها می‌توانیم در هر بار اجرا، مقدار عدد مد نظر را به اندازۀ یک واحد افزایش یا کاهش دهیم. به طور مثال، چنانچه بخواهیم عدد ذخیره‌شده در متغیر studentNumber را به میزان یک واحد افزایش دهیم، به صورت زیر عمل می‌کنیم:

int studentNumber = 121;
studentNumber++;

در دستور فوق، مقدار عددی منتسب به متغیر studentNumber یک واحد افزایش یافته و در ادامه مقدار جدید جایگزین مقدار پیشین شده و در متغیر مذکور نگهداری می‌شود. به همین منوال، با پیاده‌سازی مثالی مشابه دستورات زیر می‌توانیم مقدار اختصاص‌یافته به متغیر مورد نظر را یک واحد کاهش دهیم:

int studentNumber = 121;
studentNumber--;

در دستور سطر دوم، مقدار عددی منتسب به متغیر studentNumber معادل عدد 121 یک واحد کاهش یافته سپس مقدار نهایی مجدداً به متغیر مذکور اختصاص داده می‌شود. نکتۀ قابل‌توجه در رابطه با مفاهیم Incrementing و Decrementing این است که چنانچه علامت‌های ++ و -- را قبل از نام متغیر قرار دهیم، به طوری که مثلاً دستوری معادل studentNumber++ داشته باشیم، مفاهیمی به نام‌های Pre-incrementing و Pre-decrementing مطرح می‌شوند که در ادامه نحوۀ عملکرد هر یک را تشریح خواهیم کرد.

آشنایی با مفاهیم Pre-incrementing و Pre-decrementing در زبان جاوا

قرار دادن علائم ++ و -- پس از نام متغیر به ترتیب Post-incrementing و Post-decrementing نامیده می‌شوند و ذکر این علائم پیش از نام متغیر منجر به بروز برخی تفاوت‌ها در نحوۀ عملکرد آن‌ها می‌شود که به منظور درک بهتر این موضوع مثال زیر را مد نظر قرار می‌دهیم:

public class Test {
    public static void main(String[] args) {
        int studentNumber = 121;
        System.out.println(++ studentNumber);
    }
}

در کد فوق، قرار دادن علائم ++ پیش از متغیری به نام studentNumber به اصطلاح Pre-incrementing نامیده شده و بدین صورت عمل می‌کند که در دستور سطر چهارم ابتدا مقدار منتسب به متغیر studentNumber یک واحد افزایش یافته سپس مقدار جدید اختصاص‌یافته به متغیر مذکور در کنسول نمایش داده می‌شود اما این در حالی است که Post-incrementing یا قرار دادن علائم ++ پس از نام متغیر منجر بدین می‌شود تا دستورات مربوطه اجرا شده سپس مقدار منتسب به متغیر مذکور یک واحد افزایش یابد بدین معنی که دستورات برنامه بر اساس مقدار پیشین اختصاص‌یافته به متغیر اجرا شده و در نهایت مقدار متغیر یک واحد افزایش یافته و ادامۀ دستورات با به‌کارگیری مقدار جدید اجرا می‌شوند به طوری که برای مثال داریم:

public class Test {
    public static void main(String[] args) {
        int studentNumber = 121;
        System.out.println(studentNumber ++);
    }
}

در صورت اجرای این برنامه، مقدار ذخیره‌شده در متغیر studentNumber معادل با عدد 121 در كنسول چاپ شده سپس اپراتور ++ اِعمال می‌گردد و یک واحد به عدد 121 اضافه شده و مقدار جدید برابر با عدد 122 جایگزین مقدار پیشین در متغیر studentNumber می‌گردد. بنابراین به منظور تست مقدار جدید اختصاص‌یافته به متغیر مذکور، کد قبلی را به صورت زیر تکمیل می‌کنیم:

public class Test {
    public static void main(String[] args) {
        int studentNumber = 121;
        System.out.println(studentNumber ++);
        System.out.println(studentNumber);
    }
}

در واقع، پس از اجرای دستور ++ و افزوده شدن یک واحد بر مقدار منتسب به متغیر studentNumber اکنون مقدار جدید معادل عدد 122 در این متغیر ذخیره شده است و از همین روی اجرای دستور سطر پنجم منجر به چاپ مقدار 122 در کنسول می‌گردد.

اولویت اپراتورها در زبان برنامه‌نویسی جاوا

در پروسهٔ توسعهٔ نرم‌افزار برخی مواقع نیاز داریم تا بیش از یک عمل ریاضیاتی را روی دیتای مورد استفاده در برنامۀ خود اِعمال کنیم که برای این منظور می‌باید از اولویت عملگرها در این زبان مطلع باشیم. برای مثال، فرض کنیم که با استفاده از دیتا تایپ int دو متغیر به نام‌های x و y به صورت زیر تعریف کرده‌ایم به طوری که متغیر x دارای هیچ داده‌ای نمی‌باشد اما متغیر y دارای مقدار اولیهٔ 10 است:

int x;
int y = 10;

حال اگر فرض کینم که مقدار حاصل از ضرب عدد ذخیره‌شده در متغیر y در عدد 2 سپس جمع آن با عدد 6 را در متغیر x نگهداری کنیم، لازم است تا کد فوق را به صورت زیر تغییر دهیم:

int x;
int y = 10;
x = y * 2 + 6;

نتیجۀ حاصل از اجرای چنین دستوری هم می‌تواند عدد 26 و هم 80 باشد و بسته به اینکه اول عمل ضرب انجام شود یا عمل جمع، مقادییر متفاوتی به متغیر x منتسب می‌شوند.

    نکته

به طور کلی، در زبان برنامه‌نویسی جاوا عملیات Incrementing و Decrementing از اولویت بالاتری برخوردار بوده و در ابتدا رخ می دهند سپس محاسبات مربوط به ضرب و تقسیم صورت گرفته و در نهایت دستورات مرتبط با جمع و تفریق بر روی دیتای مد نظر اِعمال می‌شوند.

حال با توجه به آنچه در نکتۀ بالا بدان اشاره کردیم، می‌توان گفت که نتیجۀ حاصل از اِعمال اپراتورهای ریاضیاتی روی داده‌های مد نظر برابر با عدد 26 بوده و در متغیر x ذخیره می‌شود. به علاوه، چنانچه بخواهیم تا اولویت بالاتری به اپراتور مورد نظر خود بدهیم به طوری که مفسر جاوا در ابتدا آن را روی عملوندهای متناظرش (مقادیر مربوط به سمت چپ و راست عملگر مربوطه) اِعمال کند، کافی است تا اعداد مد نظر را به همراه عملگر متناظرشان داخل علائم () قرار دهیم. برای مثال، در کد فوق قصد داریم تا در ابتدا اعداد 2 و 6 با یکدیگر جمع شده سپس حاصل‌جمع آن‌ها در مقدار ذخیره‌شده در متغیر y معادل با عدد 10 ضرب شود که برای منظور دو عدد 2 و 6 را به صورت زیر داخل علامت پرانتز قرار می‌دهیم:

int x;
int y = 10;
x = y * (2 + 6);

در دستور فوق، ابتدا عملیات ریاضیاتی داخل پرانتز اجرا شده و نتیجه حاصل در مقدار منتسب به متغیر y ضرب می‌شود که در نهایت مقدار به دست آمده معادل عدد 80 به متغیر x اختصاص می‌یابد.

online-support-icon