عملیات حسابی
بیایید با ساده ترین چیز شروع کنیم - با عملیات حسابی. اینها جمع معروف (علامت +)، تفریق (-)، ضرب (*) و تقسیم (/) هستند.public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
}
}
خروجی کنسول:
1032
966
32967
30
شما قبلاً از همه اینها استفاده کرده اید. شما می توانید یک عملیات را به آنها اضافه کنید %
- باقی مانده تقسیم.
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
خروجی کنسول:
1
در این مثال، ما 33 را بر 2 تقسیم می کنیم. در نتیجه، 16 به دست می آید و یک "دم" اضافی باقی می ماند که بر 2 - یک تقسیم نمی شود. این "دم" نتیجه عملیات "باقی مانده تقسیم" خواهد بود. جاوا (و همچنین ریاضیات) عملگرهای مقایسه را پیاده سازی می کند . شما احتمالاً آنها را از مدرسه می شناسید:
- برابر با (
==
) - بیشتر (
>
) - کمتر (
<
) - بزرگتر یا مساوی با (
>=
) - کمتر یا مساوی (
<=
) - نا برابر (
!=
)
==
و نه با یک علامت =
. علامت واحد =
در جاوا یک عملگر انتساب است که در آن به متغیر یک عدد، رشته یا مقدار متغیر دیگری اختصاص داده می شود.
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x=y);// expect false to be printed to the console
}
}
خروجی کنسول:
999
اوه! این به وضوح نتیجه ای نیست که ما انتظار داشتیم. این یک نوع کاملاً متفاوت از داده است: ما انتظار داشتیم که ببینیم boolean
، اما یک عدد دریافت کردیم. این به این دلیل است که در پرانتز ما یک عملیات انتساب داریم، نه مقایسه. x=y
مقدار y
(999) به متغیر اختصاص داده شد x
و سپس آن را x
در کنسول چاپ کردیم. گزینه صحیح:
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
خروجی کنسول:
false
حالا ما 2 عدد را به درستی مقایسه کرده ایم! :) یکی دیگر از ویژگی های عملیات انتساب ( =
) این است که می توان آن را "زنجیره ای" انجام داد:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
int z = 256;
x = y = z;
System.out.println(x);
}
}
خروجی کنسول:
256
به یاد داشته باشید: تکلیف از راست به چپ انجام می شود. این عبارت ( x = y = z
) در مراحل زیر اجرا می شود:
- y = z، یعنی y = 256
- x = y، یعنی x = 256
عملیات Unary
آنها از کلمه "uno" - "یک" "unary" نامیده می شوند. آنها این نام را دریافت کردند زیرا بر خلاف موارد قبلی ، آنها بر روی یک عدد انجام می شوند و نه روی چندین. این شامل:-
منهای یکنواختی علامت عدد را معکوس می کند.
public class Main { public static void main(String[] args) { int x = 999; // change the sign for the first time x = -x; System.out.println(x); // change the sign a second time x= -x; System.out.println(x); } }
خروجی کنسول:
-999 999
ما دوبار از unary minus استفاده کردیم. در نتیجه عدد ما اول منفی شد و دوباره مثبت شد!
-
افزایش (
++
) و کاهش (--
)یک عملیات
++
یک عدد را یک عدد افزایش می دهد و یک عملیات--
آن را به همان واحد کاهش می دهد.public class Main { public static void main(String[] args) { int x = 999; x++; System.out.println(x); x--; System.out.println(x); } }
خروجی کنسول:
1000 999
x++
- علامت گذاری پسوند ++x
- نماد پیشوندی تفاوت اساسی با قرار دادن مثبت و منفی قبل یا بعد از عدد چیست؟ بیایید در یک مثال ببینیم:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
خروجی کنسول:
999
مشکلی وجود دارد! ما می خواستیم x
1 را افزایش دهیم و یک مقدار جدید به متغیر اختصاص دهیم y
. یعنی y باید برابر با 1000 باشد. اما ما یک نتیجه متفاوت داریم - 999. معلوم می شود که x
افزایش نیافته است و عملیات افزایشی کار نمی کند؟ چگونه کار کرد. برای تأیید این موضوع، در پایان x را در کنسول چاپ کنید :)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
خروجی کنسول:
999
1000
در واقع، به همین دلیل است که عملیات postfix به این صورت نامیده می شود: بعد از عبارت اصلی انجام می شود. یعنی در مورد ما: int y = x++;
ابتدا اجرا می شود y = x
(و به متغیر y مقدار اولیه اختصاص داده می شود x
) و فقط پس از آن x++
اگر از این رفتار راضی نباشیم چه می شود؟ شما باید از نماد پیشوند استفاده کنید:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
++x
در این مورد، ابتدا و تنها بعد از آن کار خواهد کرد . y = x;
این تفاوت را باید فوراً به خاطر بسپارید تا در یک برنامه واقعی اشتباه نکنید که در آن همه رفتارها می توانند به این دلیل وارونه شوند :)
عملیات ترکیبی
علاوه بر این، در جاوا عملیات به اصطلاح ترکیبی وجود دارد. آنها از ترکیب دو عملیات استفاده می کنند:- وظیفه
- عملیات حسابی
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
خروجی کنسول:
1032
x += y
به معنای x = x + y
. فقط برای اختصار، از دو کاراکتر پشت سر هم استفاده می شود. این همچنین با ترکیبی از -=
, *=
و /=
.%=
عملیات منطقی
جاوا علاوه بر عملیات روی اعداد، عملیات روی متغیرهای Booleantrue
و false
. این عملیات با استفاده از عملگرهای منطقی انجام می شود
-
!
- اپراتور "NOT". مقدار یک متغیر بولی را معکوس می کندpublic class Main { public static void main(String[] args) { boolean x = true; System.out.println(!x); } }
خروجی کنسول:
false
-
&&
- عملگر "AND". فقط در صورتی یک مقدار را برمیگرداندtrue
که هر دو عملوند باشندtrue
.public class Main { public static void main(String[] args) { System.out.println(100 > 10 && 100 > 200); System.out.println(100 > 50 && 100 >= 100); } }
خروجی کنسول:
false true
نتیجه عملیات اول است
false
، زیرا یکی از شرایط نادرست است، یعنی 100 > 200. عملگر&&
برای برگرداندن،true
نیاز به درست بودن همه شرایط دارد (مثلاً در خط دوم) . -
||
- اپراتور "OR". زمانی برمی گرددtrue
که حداقل یکی از عملوندها درست باشد.در اینجا مثال قبلی ما متفاوت عمل خواهد کرد:
public class Main { public static void main(String[] args) { System.out.println(100 > 10 || 100 > 200); } }
خروجی کنسول:
true
Выражение 100 > 200 по-прежнему ложно, но оператору “or” вполне достаточно, что первая часть (100 > 10) является истинной.
GO TO FULL VERSION