Arifmetik amallar
Keling, eng oddiy narsadan boshlaylik - arifmetik amallar bilan. Bular taniqli qo'shish (+ belgisi), ayirish (-), ko'paytirish (*) va bo'lish (/).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);
}
}
Konsol chiqishi:
1032
966
32967
30
Bularning barchasini allaqachon ishlatgansiz. Siz ularga operatsiya qo'shishingiz mumkin %
- bo'linishning qolgan qismi.
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
Konsol chiqishi:
1
Ushbu misolda biz 33 ni 2 ga bo'lamiz. Natijada, biz 16 ni olamiz va 2 ga bo'linmaydigan qo'shimcha "dum" qoladi - bir. Ushbu "quyruq" "bo'linishning qolgan qismi" operatsiyasining natijasi bo'ladi. Java (shuningdek, matematika) taqqoslash operatorlarini amalga oshiradi . Siz ularni maktabdan ham bilishingiz mumkin:
- teng (
==
) - Ko'proq (
>
) - Ozroq (
<
) - dan katta yoki teng (
>=
) - dan kichik yoki teng (
<=
) - teng emas (
!=
)
==
“Tenglik” amali bir belgi bilan emas, balki sifatida yoziladi =
. Java-da birlik belgisi =
tayinlash operatori bo'lib, bu erda o'zgaruvchiga raqam, qator yoki boshqa o'zgaruvchining qiymati beriladi.
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
}
}
Konsol chiqishi:
999
Voy! Bu biz kutgan natija emasligi aniq. Bu mutlaqo boshqa turdagi maʼlumotlar: biz koʻrishni kutgandik boolean
, lekin raqam oldik. Buning sababi shundaki, qavs ichida bizda taqqoslash emas, balki tayinlash operatsiyasi mavjud. x=y
Qiymat y
(999) o'zgaruvchiga tayinlandi x
va keyin biz uni x
konsolga chop etdik. To'g'ri variant:
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
Konsol chiqishi:
false
Endi biz 2 ta raqamni to'g'ri taqqosladik! :) Tayinlash operatsiyasining ( =
) yana bir xususiyati shundaki, uni “zanjirli” bajarish mumkin:
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);
}
}
Konsol chiqishi:
256
Esingizda bo'lsin: topshiriq o'ngdan chapga amalga oshiriladi. Bu ifoda ( x = y = z
) bosqichlarda bajariladi:
- y = z, ya'ni y = 256
- x = y, ya'ni x = 256
Birlamchi operatsiyalar
Ular "uno" - "bir" so'zidan "unary" deb ataladi. Ular bu nomni oldilar, chunki avvalgilaridan farqli o'laroq, ular bir nechta emas, balki bitta raqamda amalga oshiriladi. Bularga quyidagilar kiradi:-
Birlik minus. Bu raqamning belgisini teskari qiladi.
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); } }
Konsol chiqishi:
-999 999
Biz unary minusdan ikki marta foydalandik. Natijada bizning raqamimiz avvaliga manfiy bo'ldi, keyin yana ijobiy bo'ldi!
-
Oshirish (
++
) va kamaytirish (--
)Amaliyot
++
raqamni bittaga oshiradi va operatsiya--
uni bir xil birlikka kamaytiradi.public class Main { public static void main(String[] args) { int x = 999; x++; System.out.println(x); x--; System.out.println(x); } }
Konsol chiqishi:
1000 999
x++
- postfiks belgisi ++x
- prefiks belgisi Agar raqamdan oldin yoki keyin plyus va minuslarni qo'ysangiz, asosiy farq nima? Keling, misolda ko'rib chiqaylik:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
Konsol chiqishi:
999
Nimadir xato bormi! Biz 1 ga oshirishni x
va o'zgaruvchiga yangi qiymat tayinlashni xohladik y
. Ya'ni, y 1000 ga teng bo'lishi kerak. Lekin bizda boshqacha natija bor - 999. Ko'rinib turibdiki, u x
oshirilmagan va oshirish operatsiyasi ishlamaganmi? Bu qanday ishlagan. Buni tekshirish uchun oxirida konsolga x ni chop qilib ko'ring :)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
Konsol chiqishi:
999
1000
Darhaqiqat, postfiks operatsiyasi shuning uchun ham shunday deb ataladi: u asosiy ifodadan keyin bajariladi. Ya'ni, bizning holatimizda: int y = x++;
birinchi navbatda u bajariladi y = x
(va y o'zgaruvchisi o'zining asl qiymatiga ega bo'ladi x
), va faqat keyin x++
.Agar bu xatti-harakatlardan qoniqmasa nima bo'ladi? Prefiks belgisini ishlatishingiz kerak:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
Bunday holda, u birinchi navbatda ishlaydi ++x
va shundan keyingina y = x;
ishlaydi.Haqiqiy dasturda xatolikka yo'l qo'ymaslik uchun bu farqni darhol eslab qolish kerak, buning natijasida barcha xatti-harakatlar teskari bo'lishi mumkin :)
Kombinatsiyalangan operatsiyalar
Bundan tashqari, Java-da birlashtirilgan operatsiyalar deb ataladiganlar mavjud. Ular ikkita operatsiyaning kombinatsiyasidan foydalanadilar:- Topshiriq
- Arifmetik amal
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
Konsol chiqishi:
1032
x += y
anglatadi x = x + y
. Qisqalik uchun ketma-ket ikkita belgi ishlatiladi. -=
Bu , *=
, /=
va kombinatsiyalari bilan ham ishlaydi %=
.
Mantiqiy operatsiyalar
Raqamlar bilan operatsiyalardan tashqari, Java ham mantiqiy o'zgaruvchilar bilan operatsiyalarga ega -true
va false
. Bu amallar mantiqiy operatorlar yordamida bajariladi
-
!
- "YO'Q" operatori. Mantiqiy o'zgaruvchining qiymatini o'zgartiradipublic class Main { public static void main(String[] args) { boolean x = true; System.out.println(!x); } }
Konsol chiqishi:
false
-
&&
— “AND” operatori.true
Agar ikkala operand ham bo'lsa, qiymatni qaytaraditrue
.public class Main { public static void main(String[] args) { System.out.println(100 > 10 && 100 > 200); System.out.println(100 > 50 && 100 >= 100); } }
Konsol chiqishi:
false true
Birinchi amalning natijasi
false
, chunki shartlardan biri noto'g'ri, ya'ni 100 > 200.&&
Qaytish uchun operatortrue
barcha shartlarning to'g'ri bo'lishini talab qiladi (masalan, ikkinchi qatordagi kabi) . -
||
— “OR” operatori.true
Operandlardan kamida bittasi rost bo'lganda qaytaradi .Bu erda oldingi misolimiz boshqacha ishlaydi:
public class Main { public static void main(String[] args) { System.out.println(100 > 10 || 100 > 200); } }
Konsol chiqishi:
true
Выражение 100 > 200 по-прежнему ложно, но оператору “or” вполне достаточно, что первая часть (100 > 10) является истинной.
GO TO FULL VERSION