Амалиёти арифметикӣ
Биёед аз оддитарин чиз - бо амалҳои арифметикӣ оғоз кунем. Инҳо маъмулан ҷамъ (+ аломати), тарҳ (-), зарб (*) ва тақсим (/) мебошанд.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 - як тақсим намешавад. Ин «дум» натичаи амалиёти «бокимондаи таксимот» хохад шуд. Java (инчунин математика) операторҳои муқоисаро амалӣ мекунад . Шумо эҳтимол онҳоро аз мактаб низ медонед:
- баробар (
==
) - Бештар (
>
) - Камтар (
<
) - бузургтар аз ё баробар ба (
>=
) - камтар ё баробар ба (
<=
) - баробар нест (
!=
)
==
, на бо як аломат =
. Аломати воҳид =
дар Java оператори таъинот аст, ки дар он ба тағирёбанда рақам, сатр ё арзиши тағирёбандаи дигар таъин карда мешавад.
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
Амалиёти якхела
Онҳо аз калимаи "uno" - "як" номида мешаванд. Онҳо ин номро гирифтаанд, зеро бар хилофи рақамҳои қаблӣ, онҳо дар як рақам гузаронида мешаванд, на дар якчанд. Инҳо дар бар мегиранд:-
Минуси ягона. Он аломати рақамро баръакс мекунад.
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
Мо ду маротиба минуси унариро истифода кардем. Дар натиҷа шумораи мо дар аввал манфӣ ва баъдан боз мусбат шуд!
-
Афзоиш (
++
) ва кам кардан (--
)Амал
++
як ададро як маротиба зиёд мекунад ва амалиёт--
онро ба ҳамон воҳид кам мекунад.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
Дарвоқеъ, барои ҳамин амалиёти постфиксро чунин меноманд: он пас аз ифодаи асосӣ иҷро мешавад. Яъне дар ҳолати мо: 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;
фарқиятро фавран ба ёд овардан лозим аст, то дар як барномаи воқеӣ хато накунад, ки дар он ҳама рафтор метавонад аз ин сабаб чаппа шавад :)
Амалиёти якҷоя
Илова бар ин, дар Java амалҳои ба истилоҳ омехта мавҷуданд. Онҳо маҷмӯи ду амалиётро истифода мебаранд:- Супориш
- Амалиёти арифметикӣ
+=
-=
*=
/=
%=
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
. Танҳо барои кӯтоҳ будан, ду аломат дар як саф истифода мешаванд. Ин инчунин бо омезиши -=
, *=
, /=
ва %=
.
Амалиёти мантиқӣ
Илова ба амалиётҳо оид ба рақамҳо, Java инчунин дар тағирёбандаҳои булӣ амал мекунад -true
ва false
. Ин амалҳо бо истифода аз операторҳои мантиқӣ анҷом дода мешаванд
-
!
— Оператори «НЕ». Қимати як тағирёбандаи логикиро баргардонад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
требуется, чтобы истинными были все условия (How во второй строке, например). -
||
— оператор “ИЛИ”. returnstrue
, когда хотя бы один из операндов истинный.Здесь наш предыдущий пример уже отработает по-другому:
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