Cześć! Dzisiaj zajmiemy się bardzo ważnym tematem, a mianowicie operatorami numerycznymi w Javie .
W programowaniu liczby są wszędzie. Jeśli kopiesz głęboko i pamiętasz szkołę średnią, możesz przypomnieć sobie, że komputer przedstawia wszystkie informacje w formacie numerycznym: kombinacje zer i jedynek, znane również jako kod binarny.
Istnieje wiele operatorów numerycznych w programowaniu, więc posłużmy się przykładami, aby poznać najważniejsze z nich :) Zacznijmy od najprostszego: operatorów arytmetycznych . Są to dobrze znane operatory dodawania (


+
), odejmowania ( -
), mnożenia ( *
) i dzielenia ( )./
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);
}
}
Wyjście konsoli: 1032 966 32967 30 Już to wszystko wykorzystałeś. Do tej grupy możesz dodać %
operator reszty lub modulo ( ).
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
Wyjście konsoli: 1 W tym przykładzie dzielimy 33 przez 2. Daje to 16 z dodatkowym „ogonem” (jeden), który nie jest podzielny przez 2. Ten „ogon” jest wynikiem operacji „reszta z dzielenia”. Java implementuje również operatory porównania/relacji (podobnie jak w matematyce). Prawdopodobnie znasz je również ze szkoły:
- równy (
==
) - większy niż (
>
) - mniej niż (
<
) - większy lub równy (
>=
) - mniejszy lub równy (
<=
) - nie równe (
!=
)
==
, a nie =
. W Javie single =
to operator przypisania , który jest używany, gdy zmiennej przypisywana jest liczba, ciąg znaków lub wartość innej zmiennej.

public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x=y);// We expect false to be displayed
}
}
Wyjście konsoli: 999 Ups! To oczywiście nie jest wynik, jakiego oczekiwaliśmy. To zupełnie inny typ danych: spodziewaliśmy się wartości logicznej , ale otrzymaliśmy liczbę. Wszystko dlatego, że zamiast porównania użyliśmy operatora przypisania w nawiasach . Wartość (999) została przypisana zmiennej , a następnie wyświetliliśmy wartość . Oto właściwy sposób, aby to zrobić: x=y
y
x
x
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
Wyjście konsoli: false Teraz poprawnie porównaliśmy te dwie liczby! :) Oto kolejna cecha operatora przypisania ( =
): można go połączyć razem:
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);
}
}
Wyjście konsoli: 256 Pamiętaj, że przypisanie jest od prawej do lewej . To wyrażenie ( x = y = z
) zostanie wykonane w krokach:
y = z
, to jest,y = 256
x = y
, to jest,x = 256
Operatory jednoargumentowe.
Nazywa się je „ jednoarnymi ” od słowa „ uno ”, co oznacza „ jeden ”. Otrzymali tę nazwę, ponieważ w przeciwieństwie do poprzednich operatorów działają na jednym numerze, a nie na kilku. Obejmują one:-
Jednoargumentowy minus. Odwraca znak liczby.
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 for the second time
x= -x;
System.out.println(x);
}
}
Dane wyjściowe konsoli: -999 999 Dwukrotnie użyliśmy jednoargumentowego operatora minus. W rezultacie nasza liczba była najpierw ujemna, a potem znów stała się dodatnia!
- Zwiększenie (++) i zmniejszenie (--)
++
zwiększa liczbę o jeden, a --
operator zmniejsza liczbę o tę samą wartość.
public class Main {
public static void main(String[] args) {
int x = 999;
x++;
System.out.println(x);
x--;
System.out.println(x);
}
}
Wynik konsoli: 1000 999 Ta notacja może być Ci znana, jeśli słyszałeś o języku C++. Jego twórcy użyli tej interesującej nazwy, aby przekazać ideę, że „C++ jest rozszerzeniem języka C”. Popularna ulepszona wersja Notatnika nosi nazwę Notepad++. Oto ważna uwaga. Istnieją dwa rodzaje operatorów inkrementacji i dekrementacji: postfix i prefix . x++
- postfiks ++x
- prefiks Jaka jest podstawowa różnica między umieszczaniem plusów/minusów przed lub po liczbie? Zobaczymy w poniższym przykładzie:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
Wyjście konsoli: 999 Coś jest nie tak! Chcieliśmy zwiększyć x
o 1 i przypisać nową wartość zmiennej y. Innymi słowy, y powinno wynosić 1000. Ale zamiast tego otrzymujemy coś innego: 999. Wygląda na to, że x nie zostało zwiększone i że operator inkrementacji nie zadziałał? Ale zadziałało. Aby się przekonać, spróbuj wyświetlić x
na końcu :)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
Wyjście konsoli: 999 1000 Właśnie dlatego ta operacja nosi nazwę postfix: jest wykonywana po wyrażeniu głównym. W naszym przypadku oznacza to, że: int y = x++;
y = x
jest wykonywane jako pierwsze (i zmienna y
zostanie zainicjowana na wartość x
), a dopiero potem zostanie x++
wykonane. Co jeśli nie jest to zachowanie, którego chcemy? Następnie musimy użyć notacji przedrostkowej :
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
W tym przypadku ++x
jest przetwarzany jako pierwszy, a dopiero potem jest y = x
; wykonany. Powinieneś od razu zapisać tę różnicę w pamięci, aby uniknąć błędów w prawdziwym programie, w którym użycie postfiksu zamiast prefiksu mogłoby wywrócić wszystko do góry nogami :)
Operatory złożone
Ponadto w Javie istnieją tak zwane operatory złożone. Łączą w sobie dwóch operatorów:- Zadanie
- Operatory arytmetyczne
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
Wyjście konsoli: 1032 x += y
oznacza x = x + y
. Oba symbole są używane kolejno ze względu na zwięzłość. Kombinacje -=
, *=
, /=
i %=
działają w podobny sposób.
Operatory logiczne
Oprócz operatorów numerycznych, Java ma również operacje, które obejmują wartości logiczne ( true i false ). Operacje te są wykonywane przy użyciu operatorów logicznych!
- logiczne NIE . Odwraca wartość logiczną
public class Main {
public static void main(String[] args) {
boolean x = true;
System.out.println(!x);
}
}
Wyjście konsoli: fałsz
&&
- logiczne I . Zwraca true tylko wtedy, gdy oba operandy są prawdziwe.
public class Main {
public static void main(String[] args) {
System.out.println(100 > 10 && 100 > 200);
System.out.println(100 > 50 && 100 >= 100);
}
}
Wyjście konsoli: false true Wynikiem pierwszej operacji jest fałsz, ponieważ jeden z operandów jest fałszywy, a mianowicie 100 > 200
. Aby zwrócić prawdę, &&
operator wymaga, aby oba operandy były prawdziwe (tak jak w drugim wierszu).
||
- logiczne LUB . Zwraca true, gdy przynajmniej jeden z operandów jest prawdziwy.
public class Main {
public static void main(String[] args) {
System.out.println(100 > 10 || 100 > 200);
}
}
Wyjście konsoli: true Wyrażenie 100 > 200
nadal jest fałszywe, ale dla operatora OR jest całkowicie wystarczające, aby pierwsza część ( 100 > 10
) była prawdziwa.
GO TO FULL VERSION