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=yyxx
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 = 256x = 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ć xo 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ć xna 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 = xjest wykonywane jako pierwsze (i zmienna yzostanie 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 ++xjest 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 > 200nadal jest fałszywe, ale dla operatora OR jest całkowicie wystarczające, aby pierwsza część ( 100 > 10) była prawdziwa.
GO TO FULL VERSION