Operazioni aritmetiche
Cominciamo con la cosa più semplice: con le operazioni aritmetiche. Queste sono le ben note addizione (+ segno), sottrazione (-), moltiplicazione (*) e divisione (/).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);
}
}
Uscita console:
1032
966
32967
30
Hai già usato tutto questo. Puoi aggiungere loro un'operazione %
: il resto della divisione.
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
Uscita console:
1
In questo esempio, dividiamo 33 per 2. Di conseguenza, otteniamo 16 e rimane una "coda" extra che non è divisibile per 2 - uno. Questa “coda” sarà il risultato dell’operazione “resto della divisione”. Java (così come la matematica) implementa gli operatori di confronto . Probabilmente li conosci anche da scuola:
- equivale (
==
) - Di più (
>
) - meno (
<
) - maggiore o uguale a (
>=
) - minore o uguale a (
<=
) - non uguale (
!=
)
==
e non con un segno =
. Il segno dell'unità =
in Java è un operatore di assegnazione, in cui a una variabile viene assegnato un numero, una stringa o il valore di un'altra variabile.
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
}
}
Uscita console:
999
Ops! Questo chiaramente non è il risultato che ci aspettavamo. Questo è un tipo di dati completamente diverso: ci aspettavamo di vedere boolean
, ma abbiamo ottenuto un numero. Questo perché tra parentesi abbiamo un'operazione di assegnazione, non un confronto. x=y
Il valore y
(999) è stato assegnato alla variabile x
e poi lo abbiamo stampato x
sulla console. Opzione corretta:
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
Uscita console:
false
Ora abbiamo confrontato correttamente i 2 numeri! :) Un'altra caratteristica dell'operazione di assegnazione ( =
) è che può essere eseguita “concatenata”:
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);
}
}
Uscita console:
256
Ricorda: l'assegnazione viene eseguita da destra a sinistra. Questa espressione ( x = y = z
) verrà eseguita nei passaggi:
- y = z, cioè y = 256
- x = y, cioè x = 256
Operazioni unarie
Sono chiamati "unari" dalla parola "uno" - "uno". Hanno ricevuto questo nome perché, a differenza dei precedenti, vengono eseguiti su un numero e non su più numeri. Questi includono:-
Meno unario. Inverte il segno del numero.
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); } }
Uscita console:
-999 999
Abbiamo usato il meno unario due volte. Di conseguenza, il nostro numero è diventato inizialmente negativo e poi di nuovo positivo!
-
Incremento (
++
) e decremento (--
)Un'operazione
++
aumenta un numero di uno e un'operazione--
lo diminuisce della stessa unità.public class Main { public static void main(String[] args) { int x = 999; x++; System.out.println(x); x--; System.out.println(x); } }
Uscita console:
1000 999
x++
- notazione suffissa ++x
- notazione su prefisso Qual è la differenza fondamentale se metti più e meno prima o dopo il numero? Vediamo in un esempio:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
Uscita console:
999
C'è qualcosa di sbagliato! Volevamo incrementare x
di 1 e assegnare un nuovo valore alla variabile y
. Cioè, y dovrebbe essere uguale a 1000. Ma abbiamo un risultato diverso: 999. Si scopre che x
non è stato aumentato e l'operazione di incremento non ha funzionato? Come ha funzionato. Per verificarlo, prova a stampare x sulla console alla fine :)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
Uscita console:
999
1000
In effetti, è per questo che l'operazione suffisso si chiama così: viene eseguita dopo l'espressione principale. Cioè, nel nostro caso: int y = x++;
prima viene eseguito y = x
(e alla variabile y verrà assegnato il suo valore originale x
), e solo dopo x++
... E se non fossimo soddisfatti di questo comportamento? È necessario utilizzare la notazione del prefisso:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
In questo caso funzionerà prima ++x
e solo dopo, y = x;
vale la pena ricordare subito questa differenza per non commettere errori in un programma reale, in cui ogni comportamento può capovolgersi per questo :)
Operazioni combinate
Inoltre, in Java esistono le cosiddette operazioni combinate. Usano una combinazione di due operazioni:- Incarico
- Operazione aritmetica
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
Uscita console:
1032
x += y
significa x = x + y
. Solo per brevità vengono utilizzati due caratteri di seguito. Funziona anche con combinazioni di -=
, *=
, /=
e %=
.
Operazioni logiche
Oltre alle operazioni sui numeri, Java ha anche operazioni sulle variabili booleane -true
e false
. Queste operazioni vengono eseguite utilizzando operatori logici
-
!
— Operatore “NOT”. Inverte il valore di una variabile booleanapublic class Main { public static void main(String[] args) { boolean x = true; System.out.println(!x); } }
Uscita console:
false
-
&&
— operatore “AND”. Restituisce un valoretrue
solo se entrambi gli operandi sonotrue
.public class Main { public static void main(String[] args) { System.out.println(100 > 10 && 100 > 200); System.out.println(100 > 50 && 100 >= 100); } }
Uscita console:
false true
Il risultato della prima operazione è
false
, poiché una delle condizioni è falsa, ovvero 100 > 200. L'operatore richiede che tutte le condizioni siano vere (come nella seconda riga, ad esempio)&&
per restituire .true
-
||
— Operatore “OR”. Restituiscetrue
quando almeno uno degli operandi è vero.Qui il nostro esempio precedente funzionerà diversamente:
public class Main { public static void main(String[] args) { System.out.println(100 > 10 || 100 > 200); } }
Uscita console:
true
Выражение 100 > 200 по-прежнему ложно, но оператору “or” вполне достаточно, что первая часть (100 > 10) является истинной.
GO TO FULL VERSION