今天无意中发现一个问题,请见下面代码:
package messagecode;
/**
* 优先级问题:
* +,-,*,/ 是算数操作符
* ==,!=是关系操作符
* /优先于+,+优先于==
*
* **/
public class Test7 {
public static void main(String[] args) {
String s1 = "";
String s2="";
System.out.println(s1 == s2);
System.out.println("s1 == s2" + s1 == s2); //1.false
System.out.println("s1 == s2" + (s1 == s2)); //2.true
System.out.println(("s1 == s2" + s1) == s2); //3.false 1和3同
int a1 = 2;
int a2 = 1;
int a3 = 3;
System.out.println("a1/a2" + a1/a2); //a1/a22
System.out.println("a1/a2" + (a1/a2)); //a1/a22
System.out.println( a1 + a2 == a3); //true
System.out.println( a1 + (a2 == a3)); //报错
}
}
从最后一行报错可以去猜想,编译器的优先级是先+后==, a1+(,编译器无法识别,所以报错了;
在System.out.println(“s1 == s2” + s1 == s2);这行代码里面,因为是字符串,所以可以进行”s1 == s2” + s1的操作(会变成新的字符串)。
总结:所以,以后遇到这种字符串拼接输出的,还是加括号要稳一些。