问答详情
源自:3-4 Java中的比较运算符

为什么不加()一样的结果呀

http://img4.mukewang.com/5e5cbdd50001e6d504300048.jpg为什么不加str1==str2旁边的括号也可以运算呢

提问者:慕虎5580445 2020-03-02 16:04

个回答

  • 慕瓜3396416
    2020-03-21 21:58:03

    因为在运算符优先级表中+的运算级大于==,那意味着什么呢?就是说在你题中的运算顺序是先把+两边的字符连接,在用连接起来的整体与str2相比较(就是指判断这个整体与str2是否相同:如果不相同输出false;如果相同,输出true),即:

    先做      "str1等于str2"+str1     ,运行结果是这样的:   str1等于str2hello

    然后做    str1等于str2hello==str2     ,最终结果是这样的:    false

    而我加了括号的运算顺序是怎样呢?先计算==两边的表达式(就是指先判断str1与str2是否相同:如果不相同输出false;如果相同,输出true),然后在将 str1等于str2与前一步的运算结构相加,即:

    先做      "str1==str2"         ,运行结果是这样的:       false

    然后做    str1等于str2+false    ,最终结果是这样的:   str1等于str2false

    总而言之:加括号与不加括号都可以运算,但是由于运算顺序不同,运算结果也不同!希望题主能够深刻理解。


  • 酌酒悲歌
    2020-03-02 17:15:50

    不应该的啊,你如果执行的话应该只会显示false,前面的字符串是 没有的啊