Каково объяснение этого приоритета в строках в java?
public class PrecedenceInStrings {
public static void main(String[] args){
int x = 3;
int y = 5;
String s6 = x + y + "total";
String s7 = "total " + x + y;
String s8 = " " + x + y + "total";
System.out.println(s6 + "\n" + s7 + "\n" + s8);
}
}
вывод:
8total
всего 35
35total
Компилятор Java обрабатывает операторы +
в ваших выражениях слева направо. Когда дело доходит до первого +
в
x + y + "total"
он видит int
с обеих сторон, поэтому он выполняет добавление. Когда Java-компилятор обрабатывает второй +
, он видит int
и String
и интерпретирует оператор как конкатенацию строк.
В вашем втором и третьем выражениях левая часть оператора +
является строкой, поэтому все операторы интерпретируются как конкатенации.
Если вы хотите принудительно выполнить определенный порядок операций, используйте круглые скобки. Например, если вы хотите получить общее количество в своем третьем примере, скопируйте добавление, например:
String s8 = " " + (x + y) + "total";