java操作符优先级

今天无意中发现一个问题,请见下面代码:

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的操作(会变成新的字符串)。

总结:所以,以后遇到这种字符串拼接输出的,还是加括号要稳一些。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值