English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Introduzione di base a Java

Controllo dei flussi di Java

Array di Java

Programmazione orientata agli oggetti in Java (I)

Programmazione orientata agli oggetti in Java (II)

Programmazione orientata agli oggetti in Java (III)

Gestione delle eccezioni di Java

Liste di Java

Queue (coda) di Java

Map di Java

Set di Java

Input/Output (I/O) di Java

Reader/Writer di Java

Altri argomenti di Java

Operatori di Java

Una delle funzioni più fondamentali del computer è eseguire calcoli matematici, e come linguaggio di programmazione, Java fornisce anche un set ricco di operatori per manipolare le variabili. Possiamo dividere gli operatori in diversi gruppi:

  • Operatori aritmetici

  • Operatore relazionale

  • Operatori di bit

  • Operatori logici

  • Operatori di assegnamento

  • Altri operatori

Operatori aritmetici

Gli operatori aritmetici vengono utilizzati nelle espressioni matematiche e hanno la stessa funzione del loro equivalente matematico. La tabella elenca tutti gli operatori aritmetici.

Gli esempi nella tabella suppongono che il valore della variabile intera A sia 10 e il valore della variabile B sia 20:

                Operatore                描述                Esempio
+Addizione - Valore dei due lati dell'operatore sommatoA + B è uguale a 30
-Sottrazione - L'operando di sinistra sottratto all'operando di destraA – B è uguale a -10
*Moltiplicazione - Valore dei due lati dell'operatore moltiplicatoA * B è uguale a 200
/Divisione - La divisione dell'operando di sinistra per l'operando di destraB / A è uguale a 2
Rimane - Il residuo della divisione dell'operando di sinistra per l'operando di destraB%A è uguale a 0
++Incremento: il valore dell'operando viene aumentato di 1B++ o ++B è uguale a 21 (differenze dettagliate di seguito)
--Decremento: il valore dell'operando viene ridotto di 1B-- o --B è uguale a 19 (differenze dettagliate di seguito)

Esempio

Di seguito è riportato un esempio di programma semplice che dimostra gli operatori aritmetici. Copia e incolla il seguente programma Java e salvalo come file ArithmeticOperator.java, quindi compila e esegui questo programma:

class ArithmeticOperator {
    public static void main(String[] args) {
        
        double number1 = 12.5, number2 = 3.5, result;
        
        //使用加法运算符
        result = number1 + number2;
        System.out.println("number1 + number2 = " + result);
        
        //使用减法运算符
        result = number1 - number2;
        System.out.println("number1 - number2 = " + result);
        
        //使用乘法运算符
        result = number1 * number2;
        System.out.println("number1 * number2 = " + result);
        //使用除法运算符
        result = number1 / number2;
        System.out.println("number1 / number2 = " + result);
        
        // 使用余数运算符
        result = number1 % number2;
        System.out.println("number1 % number2 = " + result);
    }
}

Il risultato della compilazione e dell'esecuzione degli esempi sopra è il seguente:

number1 + number2 = 16.0
number1 - number2 = 9.0
number1 * number2 = 43.75
number1 / number2 = 3.5714285714285716
number1 % number2 = 2.0

Operatore di incrementazione e decremento

1. Operatore di incrementazione (++), decremento (--)È un operatore aritmetico speciale che richiede due operandi per l'operazione, mentre l'operatore di incrementazione e decremento è un singolo operando.

public class selfAddMinus{
    public static void main(String[] args){
        int a = 3; Definisci una variabile;
        int b = ++a; Operazione di incremento
        int c = 3;
        int d = --c; Operazione di decremento
        System.out.println("Il valore dopo l'operazione di incremento è uguale a"+b);
        System.out.println("Il valore dopo l'operazione di decremento è uguale a"+d);
    }
}

Il risultato della runtime è:

Il valore dopo l'operazione di incremento è uguale a 4
Il valore dopo l'operazione di decremento è uguale a 2

Spiegazione:

  • int b = ++a; La decomposizione del processo di calcolo è: a=a+1=4; b=a=4, il risultato finale è b=4, a=4

  • int d = --c; La decomposizione del processo di calcolo è: c=c-1=2; d=c=2, il risultato finale è d=2, c=2

2. Prefix increment and decrement (++a, --a): Esegui prima l'incremento o il decremento, poi l'operazione dell'espressione.

3. Postfix increment and decrement (a++, a--): Esegui prima l'operazione dell'espressione, poi l'incremento o la decremento Esempio:

public class selfAddMinus{
    public static void main(String[] args){
        int a = 5;//Definire una variabile;
        int b = 5;
        int x = 2*++a;
        int y = 2*b++;
        System.out.println("Prima del prefisso dell'operatore di incrementazione a="+a+",x="+x);
        System.out.println("Dopo il prefisso dell'operatore di incrementazione b="+b+",y="+y);
    }
}

Il risultato della runtime è:

Prima del prefisso dell'operatore di incrementazione a = 6, x = 12 dopo il prefisso dell'operatore di incrementazione b = 6, y = 10

Operatore relazionale

La tabella sottostante elenca gli operatori relazionali supportati da Java

L'esempio nella tabella mostra che la variabile intera A ha un valore di 10, la variabile B ha un valore di 20:

Operatore    描述    Esempio
    ==Controlla se i valori dei due operandi sono uguali, se lo sono la condizione è vera.(A == B) è falso.
    !=Controlla se i valori dei due operandi sono uguali, se non lo sono la condizione è vera. (A != B) è vero.
    > Controlla se il valore del primo operando è maggiore del valore del secondo operando, se è così la condizione è vera.(A > B) è falso.
    <  Verifica se il valore dell'operando sinistro è minore del valore dell'operando destro, se lo è, la condizione è vera.(A < B) è vero.
    >=Verifica se il valore dell'operando sinistro è maggiore o uguale al valore dell'operando destro, se lo è, la condizione è vera.(A >= B) è falso.
    <=Verifica se il valore dell'operando sinistro è minore o uguale al valore dell'operando destro, se lo è, la condizione è vera.(A <= B) è vero.

Esempio

Esempio di programma semplice che dimostra gli operatori relazionali. Copia e incolla il seguente programma Java e salvalo come file Test.java, quindi compila e esegui il programma:

Codice del file Test.java:

public class Test {
 
  public static void main(String[] args) {
     int a = 10;
     int b = 20;
     System.out.println("a == b = " + (a == b));
     System.out.println("a != b = " + (a != b));
     System.out.println("a > b = " + (a > b));
     System.out.println("a < b = " + (a < b));
     System.out.println("b >= a = " + (b >= a));
     System.out.println("b <= a = " + (b <= a));
  }
}

Il risultato della compilazione e dell'esecuzione degli esempi sopra è il seguente:

a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false

Operatori di bit

Java definisce gli operatori di bit, applicati ai tipi di dati interi (int), long, short, char e byte, tra gli altri.

Gli operatori di bit agiscono su tutti i bit e operano a livello di bit. Supponiamo che a = 60 e b = 13; la loro rappresentazione binaria sarà come segue:

A = 0011 1100
B = 0000 1101
-----------------
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011

La tabella seguente elenca le operazioni fondamentali degli operatori di bit, presupponendo che il valore della variabile intera A sia 60 e il valore della variabile B sia 13:

Operatore描述Esempio
Se entrambi i bit corrispondenti sono 1, il risultato è 1, altrimenti è 0(A & B), si ottiene 12, ovvero 0000 1100
|Se entrambi i bit corrispondenti sono 0, il risultato è 0, altrimenti è 1(A | B) ottiene 61, ossia 0011 1101
^Se i valori delle posizioni corrispondenti sono uguali, il risultato è 0, altrimenti è 1(A ^ B) ottiene 49, ossia 0011 0001
Operatore di negazione bit a inversione di ogni bit dell'operando, ovvero 0 diventa 1, 1 diventa 0.(〜A) ottiene -61, ossia 1100 0011
<< Operatore di spostamento a sinistra. L'operando sinistro viene spostato a sinistra di un numero di posizioni specificato dall'operando destro.A << 2 ottiene 240, ossia 1111 0000
>> Operatore di spostamento a destra. L'operando sinistro viene spostato a destra di un numero di posizioni specificato dall'operando destro.A >> 2 ottiene 15, ossia 1111
>>> Operatore di spostamento a destra con riempimento di zero. Il valore dell'operando sinistro viene spostato a destra di un numero di posizioni specificato dall'operando destro, e i bit vuoti vengono riempiti con zero.A>>>2 ottiene 15, ossia 0000 1111

Esempio

Esempio di programma semplice che dimostra gli operatori bit. Copia e incolla il seguente programma Java e salvalo come file Test.java, quindi compila e esegui il programma:

public class Test {
  public static void main(String[] args) {
     int a = 60; /* 60 = 0011 1100 */ 
     int b = 13; /* 13 = 0000 1101 */
     int c = 0;
     c = a & b;       /* 12 = 0000 1100 */
     System.out.println("a & b = " + c );
 
     c = a | b;       /* 61 = 0011 1101 */
     System.out.println("a | b = " + c );
 
     c = a ^ b;       /* 49 = 0011 0001 */
     System.out.println("a ^ b = " + c );
 
     c = ~a;          /*-61 = 1100 0011 */
     System.out.println("~a = " + c );
 
     c = a << 2;     /* 240 = 1111 0000 */
     System.out.println("a << 2 = " + c );
 
     c = a >> 2;     /* 15 = 1111 */
     System.out.println("a >> 2  = " + c );
  
     c = a >>> 2;     /* 15 = 0000 1111 */
     System.out.println("a >>> 2 = " + c );
  }
}

Il risultato della compilazione e dell'esecuzione degli esempi sopra è il seguente:

a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2 = 15
a >>> 2 = 15

Operatori logici

La tabella seguente elenca le operazioni di base degli operatori logici, supponendo che le variabili booleane A siano true e B false

Operatore描述Esempio
&&Chiamato operatore di operazione logica AND. La condizione è true solo se entrambi gli operandi sono true.(A && B)为假。
| |Chiamato operatore di operazione logica o. Se qualsiasi operando è true, la condizione è true.(A || B)为真。
Chiamato operatore di negazione logica. Utilizzato per invertire lo stato logico dell'operando. Se la condizione è true, l'operatore di negazione logica riceve false.!(A && B)为真。

Esempio

Il seguente esempio di programma semplice dimostra gli operatori logici. Copia e incolla il seguente programma Java e salvalo come file Test.java, quindi compila e esegui questo programma:

public class Test {
  public static void main(String[] args) {
     boolean a = true;
     boolean b = false;
     System.out.println("a && b = " + (a && b));
     System.out.println("a || b = " + (a || b));
     System.out.println("!(a && b) = " + !(a && b));
  }
}

Il risultato della compilazione e dell'esecuzione degli esempi sopra è il seguente:

a && b = false
a || b = true
!(a && b) = true

Operatore di logica a breve circuito

Quando si utilizza l'operatore logico AND, il risultato è true solo se entrambi gli operandi sono true, ma se il primo operando è false, il risultato è necessariamente false, in questo caso non si esegue più la seconda operazione.

public class Logica{
    public static void main(String[] args){
        int a = 5;//Definire una variabile;
        boolean b = (a<4)&&(a++<10);
        System.out.println("Il risultato dell'uso dell'operatore di logica a breve circuito è"+b);
        System.out.println("Il risultato di a è"+a);
    }
}

Il risultato della runtime è:

Il risultato dell'uso dell'operatore di logica a breve circuito è false
Il risultato di a è 5

Spiegazione:Questo programma utilizza l'operatore di logica a breve circuito (&&),prima di tutto verifica se il risultato di a<4 è false, quindi il risultato di b deve essere false, quindi non esegue la seconda operazione di a++<10, quindi il valore di a è 5.

Operatori di assegnamento

Di seguito sono elencati gli operatori di assegnamento supportati dal linguaggio Java:

Operatore描述Esempio
=Operatore di assegnamento semplice, che assegna il valore del secondo operando al primo operandoC = A + B assegnerà il valore di A + B a C
+ =Operatore di assegnamento addizione, che assegna al primo operando il valore dell'addizione tra il primo e il secondo operandoC += A è equivalente a C = C + A
- =Operatore di assegnamento sottrazione, che assegna al primo operando il valore della sottrazione tra il primo e il secondo operandoC -= A è equivalente a C = C - A
* =Operatore di assegnamento moltiplicazione, che assegna al primo operando il valore della moltiplicazione tra il primo e il secondo operandoC *= A è equivalente a C = C * A
/ =Operatore di assegnamento divisione, che assegna al primo operando il valore della divisione tra il primo e il secondo operandoC /= A, C e A sono dello stesso tipo è equivalente a C = C / A
(%) =Operatore di assegnamento modulo, che assegna al primo operando il valore del modulo tra il primo e il secondo operandoC %= A è equivalente a C = C % A
<< =Operatore di assegnamento bitwise shift a sinistraC <<= 2 è equivalente a C = C << 2
>> =Operatore di assegnamento bitwise shift a destraC >>= 2 è equivalente a C = C >> 2
& =Operatore di assegnamento bitwise andC &= 2 è equivalente a C = C & 2
^ =Operatore di assegnamento bitwise xorC ^= 2 è equivalente a C = C ^ 2
| =Operatore di assegnamento bitwise oC |= 2 è equivalente a C = C | 2

Esempio

Il seguente esempio di programma semplice dimostra l'operatore di assegnamento. Copia e incolla il seguente programma Java e salvalo come file AssignmentOperator.java, quindi compila e esegui questo programma:

class AssignmentOperator {
    public static void main(String[] args) {
        
        int number1, number2;
        
        //Assegna 5 a number1
        number1 = 5;
        System.out.println(number1);
                
        //Assegna il valore della variabile number2 a number1
        number2 = number1;
        System.out.println(number2);
    }
}

Il risultato della compilazione e dell'esecuzione degli esempi sopra è il seguente:

5
5

Operatore condizionale (?:)

L'operatore condizionale è anche noto come operatore ternario. Questo operatore ha tre operandi e deve giudicare il valore dell'espressione booleana. La funzione principale di questo operatore è determinare quale valore dovrebbe essere assegnato alla variabile.

variabile x = (espressione) ? valore se vero : valore se falso

Esempio

public class Test {
   public static void main(String[] args){
      int a, b;
      a = 10;
      // Se a è uguale a 1, impostare b a 20, altrimenti 30
      b = (a == 1) ? 20 : 30;
      System.out.println("Il valore di b è: " + b);
 
      // Se a è uguale a 10, impostare b a 20, altrimenti 30
      b = (a == 10) ? 20 : 30;
      System.out.println("Il valore di b è: " + b);
   }
}

Il risultato della compilazione e dell'esecuzione degli esempi sopra è il seguente:

Il valore di b è: 30
Il valore di b è: 20

Operatore instanceof

Questo operatore viene utilizzato per operare su esempi di oggetti, per verificare se l'oggetto è di un tipo specifico (tipologia di classe o interfaccia).

Il formato dell'operatore instanceof è il seguente:

(Object reference variable) instanceof (class/interface type)

Se l'oggetto al quale si riferisce la variabile di sinistra dell'operatore è un oggetto di una classe o interfaccia (class/interface) di destra, allora il risultato è vero.

Ecco un esempio:

String name = "James";
boolean result = name instanceof String; // Poiché name è di tipo String, viene restituito vero

Se l'oggetto da confrontare è compatibile con il tipo di destra, l'operatore ancora restituisce true.

Ecco un esempio:

class Vehicle {}
 
public class Car extends Vehicle {
   public static void main(String[] args){
      Vehicle a = new Car();
      boolean result = a instanceof Car;
      System.out.println(result);
   }
}

Il risultato della compilazione e dell'esecuzione degli esempi sopra è il seguente:

true

Priorità degli operatori in Java

Quando più di un operatore compaiono in un'espressione, chi viene prima e chi dopo? Questo riguarda il problema del livello di priorità degli operatori. In un'espressione con più operatori, la diversità di priorità degli operatori può portare a risultati finali molto diversi.

Ad esempio, (1+3) + (3+2) * 2, se l'espressione viene calcolata con la priorità più alta del segno +, la risposta è 18, se invece si segue la priorità del segno *, la risposta è 14.

Ad esempio, x = 7 + 3 * 2; qui x riceve 13, non 20, perché l'operatore moltiplicativo ha una priorità più alta rispetto all'operatore additivo, quindi prima si calcola 3 * 2 che è 6, poi si aggiunge 7.

Nella tabella sottostante, gli operatori con la priorità più alta sono elencati in alto nella tabella, quelli con la priorità più bassa in basso nella tabella.

CategoriaOperatoreAssociatività
Postfisso() [] . (operatore di punto)Da sinistra a destra
Unarioexpr++  expr--Da sinistra a destra
Unario++expr --expr + - ~ !Da destra a sinistra
Moltiplicativo * /%Da sinistra a destra
Additivo + -Da sinistra a destra
Spostamento >> >>>  << Da sinistra a destra
Relazionale >  >=  <  <= Da sinistra a destra
Uguale ==  !=Da sinistra a destra
E bitwiseDa sinistra a destra
XOR bitwise^Da sinistra a destra
O bitwise|Da sinistra a destra
E logico&&Da sinistra a destra
O logico| |Da sinistra a destra
Condizionale?:Da destra a sinistra
Assegnazione= + = - = * = / =%= >> = << =&= ^ = | =Da destra a sinistra
VirgolaDa sinistra a destra