در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش جاوا (Java) به روش مدرسه جاوا قسمت 5 : عملگرها در جاوا

در این درس با مفهوم عملگرها (Operators) در زبان جاوا آشنا خواهیم شد. عملگرها نمادهای مخصوصی هستند که کار خاصی را روی یک یا چند عملوند (عبارتی که قبل یا بعد یا دو طرف یک عملگر نوشته میشود) انجام میدهند و نتیجه عملیات را بر می گردانند. به عنوان مثال عملگر + در ریاضی دو عملوند در دو طرف آن قرار می گیرند و عملگر + عمل جمع این دو عملوند را انجام می دهد.

پنج نوع کلی عملگر در جاوا داریم:

  1. عملگرهای ریاضی (Arithmetic Operators)
  2. عملگرهای منطقی (Logical Operators)
  3. عملگرهای رابطه ای (Relational Operators)
  4. عملگرهای انتساب (Assignment Operators)
  5. عملگرهای بیتی (Bitwise Operators)

در این آموزش ما فقط چهار نوع اول را بررسی خواهیم کرد. عملگرهای بیتی کاربرد زیادی ندارند.

عملگرهای ریاضی

این عملگرها همانطور که از اسم آن ها معلوم است برای انجام عملیات ریاضی استفاده میشوند.

مدرسه جاوا - قسمت چهارم - عملگرها

در تعریف عملگرها گفتیم وقتی عملگرها کاری روی عملوندهای خود انجام می دهند نتیجه عملیات را بر می گردانند پس می توانیم با متد println() نتیجه انجام عملیات را در برنامه چاپ کنیم.

مثال: در برنامه زیر چهار عمل اصلی ریاضی به همراه عملگر باقی مانده ( % ) نشان داده شده است. خروجی هرخط در کامنت همان خط نوشته شده است.
public class Operators {

   public static void main(String[] args) {

      System.out.println(2 + 2); //Output: 4

      System.out.println(2 * 4); //Output: 8

      System.out.println(15 - 10); //Output: 5

      System.out.println(6 / 2); //Output: 3

      System.out.println(6 % 2); //Output: 0

   }

}
نکته: عملگر تقسیم ( / ) خارج قسمت تقسیم دو عدد و عملگر باقی مانده ( % ) باقی مانده تقسیم دو عدد را بر می گرداند.

همچنین اگر برنامه را اجرا کنید خروجی زیر را در پنجره Console مشاهده خواهید کرد:

مدرسه جاوا - قسمت چهارم - عملگرها

انجام عملیات ریاضی روی متغیرها


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

مثال: در برنامه زیر دو متغیر از نوع int تعریف کردیم و به آن ها مقدار دادیم سپس روی این دو متغیر عمل ضرب و تقسیم را انجام دادیم.
public class Operators {

   public static void main(String[] args) {

      int x, y;

      x = 6;

      y = 3;

      System.out.println(x * y);

      System.out.println(x / y);

   }

}
خروجی برنامه همانطور که مشخص است چاپ عدد 18 و در خط بعد چاپ عدد 2 خواهد بود.

در اکثر عملگرها تنها محدود به دو عملوند نیستیم. به عنوان مثال به کد زیر توجه کنید:
public class Operators {

   public static void main(String[] args) {

      int x = 6, y = 3, z = 2;

      System.out.println(x * y / z);

   }

}
نتیجه چاپ این عملیات عدد 9 خواهد بود به این صورت که ابتدا x در y ضرب شده و سپس نتیجه آن تقسیم بر z می شود. البته همیشه این عملیات به ترتیب و پشت سر هم انجام نمی شود و بستگی به درجه الویت عملگر دارد که در ادامه درس الویت عملگرها را توضیح خواهیم داد.

همچنین می توان نتیجه عملیات عملگرها روی متغیرها را در یک متغیر دیگر قرار داد. برنامه بالا را به صورت زیر هم می توان نوشت:
public class Operators {

   public static void main(String[] args) {

      int x = 6, y = 3, z = 2;

      int result = x * y / z;

      System.out.println(result);

   }

}
خروجی این برنامه دقیقا مشابه برنامه قبل است.

عملگرهای ++ و --


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

فرض کنید متغیری به نام x داریم و می خواهیم یک واحد به مقدار آن اضافه کنیم:
x = x + 1;
به جای کد بالا می توانیم از عملگر ++ برای این کار استفاده کنیم:
x++;
این عبارت دقیقا معادل عبارت قبلی است و یک واحد به متغیر x اضافه می کند.

به همین ترتیب برای کم کردن یک واحد از متغیر x به جای عبارت:
x = x + 1;
می توانیم از عبارت:
x--;
استفاده کنیم.

نکته ای که وجود دارد این است که عملگرهای -- و ++ را هم قبل از عملوند و هم بعد از آن می توان قرار داد و در بعضی مواقع بین این دو تفاوت ظریفی وجود دارد. اگر عملگر ++ قبل از عملوند قرار بگیرد ابتدا یک واحد به عملوند اضافه شده و سپس مقدار آن بر می گردد و اگر بعد از عملوند قرار بگیرد ابتدا مقدار عملوند بر می گردد و سپس یک واحد به آن اضافه می شود. برای عملگر -- هم همین قاعده برقرار است. در کد بالا تفاوتی ندارد که عملگرهای ++ و -- کدام طرف عملوند بیایند. تفاوت این دو در کد زیر مشخص می شود:
public class Operators {

   public static void main(String[] args) {

      int x = 2;

      System.out.println(x++);

   }

}
خروجی برنامه بالا عدد 2 می باشد چون ابتدا مقدار اولیه x به دستور چاپ داده شده و سپس یک واحد اضافه می شود.

اما خروجی این کد عدد 3 می باشد چون ابتدا یک واحد به x اضافه می شود و سپس مقدار آن برای چاپ به متد println داده می شود.
public class Operators {

   public static void main(String[] args) {

      int x = 2;

      System.out.println(++x);

   }

}

عملگرهای رابطه ای


این عملگرها نسبت عملوندها به هم را بررسی می کنند. مقداری که عملگرهای نسبی بر می گردانند یک عبارت boolean یعنی یا true و یا false خواهد بود.

مدرسه جاوا - قسمت چهارم - عملگرها

مثال: در برنامه زیر به عنوان مثال از چند عملگر نسبی برای مقایسه دو متغیر استفاده کردیم:
public class Operators {

   public static void main(String[] args) {

      int x = 2, y = 6;

      System.out.println(x == y);

      System.out.println(x < y);

      System.out.println(x <= y);

   }

}
در کد بالا در صورتی که حاصل مقایسه دو عملگر مثبت باشد عملگر true و اگر منفی باشد عملگر false را بر می گرداند. یعنی مثلا چون متغیر x با y با هم مساوی نیستند پس دستور چاپ اول عبارت false را چاپ می کند و چون x کوچکتر از y می باشد پس دستور چاپ دوم عبارت true را چاپ می کند. در دستور چاپ سوم از عملگر کوچکتر یا مساوی استفاده شده یعنی اگر x کوچکتر یا مساوی y باشد، عبارت چاپ شده true خواهد بود که در اینجا x کوچکتر از y است پس دستور چاپ سوم هم عبارت true را چاپ می کند.

عملگرهای منطقی


این عملگرها همانند عملگرهای نسبی یک عبارت boolean را بر می گردانند.
مدرسه جاوا - قسمت چهارم - عملگرها

عملگرهای & و &&


این دو عملگر در صورتی که عملوندهای دو طرف آن هردو true باشند نتیجه true و در غیر این صورت نتیجه false بر می گرداند. تفاوت & و && در این است که هنگامی که از && استفاده می کنیم اگر عملوند اول false باشد چون در هر صورت نتیجه false خواهد شد دیگر true یا false بودن عملوند دوم بررسی نخواهد شد.

مثال:
public class Operators {

   public static void main(String[] args) {

      int x = 3;

      boolean result = (x > 5) && (x < 10);

   }

}
در این مثال چون x از 5 بزرگتر نیست پس نتیجه عبارت اول false می شود و چون اولین عملوند عملگر && برابر با false شد پس در نتیجه کل عبارت false است و دیگر اینکه x از 10 کوچکتر هست یا نه بررسی نمی شود. توجه کنید که نتیجه این عملیات را داخل یک متغیر از نوع boolean قرار دادیم.

اما عملگر & حتی در صورتی که عملوند اول آن برابر با false باشد با اینکه در هر صورت نتیجه کل عبارت false می شود اما بازهم true یا false بودن عبارت دوم را بررسی می کند.



عملگرهای OR و OR نوع دوم


این دو عملگر در صورتی که حداقل یکی از دو عملوند آن true باشد نتیجه true را بر می گرداند و اگر هر دو عملوند آن true باشد باز هم نتیجه true برگردانده می شود.

مثال:
public class Operators {

   public static void main(String[] args) {

      int x = 3;

      boolean result = (x > 5) || (x < 10);

   }

}
نتیجه این عملیات که در متغیر result قرار داده می شود true می باشد چون عملوند دوم true است.

تفاوت OR و OR نوع دوم هم دقیقا مانند تفاوت && و & می باشد. یعنی اگر از OR نوع دوم استفاده کنیم و عملوند اول true باشد عملوندهای دیگر بررسی نمی شوند و نتیجه true بر می گردد چون شرط اینکه حداقل یکی از عملوندها true باشد برقرار شده است ولی اگر از OR استفاده کنیم اگر عملوند اول true باشد با اینکه نتیجه true می شود بازهم عملوند دوم بررسی خواهد شد.

عملگر ^


طرز کار عملگر XOR به این صورت است که اگر هر دو عملوند آن هم ارزش باشند یعنی اگر هردو true یا هر دو false باشند نتیجه XOR برابر با false خواهد بود و اگر عملوندهای آن هم ارزش نباشند نتیجه true خواهد بود.

مثال:
public class Operators {

   public static void main(String[] args) {

      int x = 3;

      boolean result = (x > 1) ^ (x == 3);

      System.out.println(result);

   }

}
در کد بالا همانطور که مشاهده می کنید هر دو عملوند عملگر ^ برابر با true می باشد چون x هم از 1 بزرگتر است و هم برابر با 3 است پس در نتیجه عملگر ^ مقدار false را بر می گرداند.

عملگر !


عملگر NOT یک عملگر تک عملوندی است که عملوند آن روبروی آن قرار می گیرد. عملوند این عملگر باید از نوع boolean باشد. این عملگر متضاد عملوند خود را بر می گرداند یعنی اگر عملوند آن true باشد عملگر NOT مقدار false بر می گرداند و اگر عملوند آن false باشد عملگر NOT مقدار true را بر می گرداند.
public class Operators {

   public static void main(String[] args) {

      int x = 2;

      boolean result = !(x < 5);

      System.out.println(result);

   }

}
همانطور که مشاهده می کنید نتیجه عبارت (x < 5) برابر با true می باشد چون 2 از 5 کوچکتر است اما وقتی عملگر NOT در ابتدای این عبارت آمده پس در نتیجه این عملگر متضاد true که همان false می باشد را در متغیر result قرار می دهد و برنامه عبارت false را چاپ خواهد کرد.

عملگرهای انتساب


از عملگر انتساب یا همان = بارها استفاده کردیم. از این عملگر برای نسبت دادن یک مقدار به یک متغیر استفاده می شود. توجه کنید که عملگر = مانند عملگر مساوی در ریاضی نیست و همانطور که در قسمت عملگرهای ریاضی ذکر شد برای بررسی مساوی بودن دو عبارت از عملگر == استفاده می کنیم. چند نوع از عملگرهای انتساب را در جدول زیر مشاهده می کنید:

فرض کنید سه متغیر عددی به نام های A و B و C داریم:

مدرسه جاوا - قسمت چهارم - عملگرها

مثال:
public class Operators {

   public static void main(String[] args) {

      int x = 2;

      x *= 3; // x = x * 3;

      System.out.println(x);

   }

}
در برنامه بالا عدد 6 روی صفحه چاپ می شود به دلیل اینکه در عبارت x *= 3 مقدار قبلی x که برابر با 2 بود، در عدد 3 ضرب می شود و دوباره در متغیر x قرار داده می شود. همچین عبارت در این خط، عبارت معادل آن به صورت کامنت نوشته شده است.

عملگرهای یگانی (Unary Operators)


این عملگرها تنها با یک عملوند کار می کنند. با چند نوع از این عملگرها کار کردیم. حالا تمام آن ها را یک جا معرفی می کنیم:

مدرسه جاوا - قسمت چهارم - عملگرها

اولویت عملگرها (Operator Precedence)


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

مدرسه جاوا - قسمت چهارم - عملگرها

در این جدول چند عملگر دیگر هم بودند که به دلیل آنکه به آن ها اشاره نکردیم آن ها را از جدول حذف کردیم.

نکته: همانطور که می بینید عملگرهای انتساب کمترین اولویت را دارند

نکته: در ردیف اول و دوم منظور از expr یک متغیر می باشد که همانطور که می بینید بالاترین اولویت با عملگرهای ++ و -- هستند هنگامی که بعد از نام متغیر بیایند یعنی به صورت پسوندی (postfix) باشند.

نکته: در ردیف دوم منظور از expr+ و expr- عملگرهای یگانی مثبت ساز و منفی ساز هستند که به آن ها اشاره شد.
#برنامه_نویسی_جاوا #عملگرهای_رابطه_ای_در_جاوا #آموزش_برنامه_نویسی_جاوا #عملگرهای_محاسباتی_در_جاوا #انواع_عملگرها_در_جاوا #شروع_برنامه_نویسی_جاوا #عملگرها_در_زبان_های_برنامه_نویسی #زبان_برنامه_نویسی_جاوا
عنوان
1 آموزش جاوا (Java) به روش مدرسه جاوا قسمت 1 : نصب ابزارهای لازم رایگان
2 آموزش جاوا (Java) به روش مدرسه جاوا قسمت 2 : نوشتن اولین برنامه رایگان
3 آموزش جاوا (Java) به روش مدرسه جاوا قسمت 3 : تورفتگی خطوط رایگان
4 آموزش جاوا (Java) به روش مدرسه جاوا قسمت 4 : متغیرها و انواع داده رایگان
5 آموزش جاوا (Java) به روش مدرسه جاوا قسمت 5 : عملگرها در جاوا رایگان
زمان و قیمت کل 0″ 0
2 نظر
soheil One

خسته نباشید .لطفاآموزش رو به همین صورت ادامه بدید. خیلی خوبه. با تشکر

مرتضی عباسی

بسیار سپاس ...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....