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