Ho difficoltà a capire perché l'output di queste due righe è diverso ...
public static void main(String[] args) {
System.out.println("6.0+1="+6.0+1);
System.out.println("6.0+1="+(6.0+1));
}
L'output
6.0 + 1 = 6.01
6.0 + 1 = 7.0
Il tuo esempio non usa plus unario.
Lo usi per la concatenazione di stringhe e per l'aggiunta.
"6.0+1="+6.0+1
sarà valutato nei tipi come stringa + numero + numero .
Quindi, prima "6.0+1" + 6.0
utilizzerà +
come operatore di concatenazione delle stringhe, risultante in una nuova stringa: "6.0+1=6.0"
. Quindi accade lo stesso con + 1
alla fine, risultante in un'altra concatenazione di stringhe.
"6.0+1="+(6.0+1)
wil per prima cosa valuta la parte (...)
, in cui aggiungi due numeri, quindi il risultato sarà 7.0
(virgola mobile + intero = > virgola mobile). Quindi avviene la concatenazione della stringa come nella prima variazione.
Gli operatori unari lavorerebbero su una singola variabile / costante / espressione, cioè l'operatore meno unario come in x = -1
.
Le risposte sarebbero sicuramente diverse a causa dell'uso di Bracket nella seconda operazione, l'operazione sarebbe prima avviata da parentesi ad altri operatori.
Leggi altre domande sui tag java operator-precedence