当前位置: 首页 > 知识库问答 >
问题:

Java:涉及方法时的运算符优先级

陶文林
2023-03-14

好心协助。我正在准备Java7Programmer1考试,在一次enthuware测试中遇到了这个问题。

考虑以下方法:

静态int mx(int s){for(int i=0;i<3;i++){s=s+i;}返回s;}

和下面的代码片段:

`   int s=5;
    s += s + mx(s) + ++s;
    System.out.println(s);` 

它会印什么?

结尾问题

根据运算符优先级的规则,我首先计算++s,得到s的值6,然后在mx方法中使用6得到值8。接下来我加了6+8+6=20。最后以s=6+20=26进行赋值操作。

共有1个答案

狄兴邦
2023-03-14

您不应该从++s开始,因为计算是从左到右的。

s += s + mx(s) + ++s;

s = 5 + 5 + mx (5) + 6;

这是

s = 5 + 5 + 8 + 6 = 24
 类似资料:
  • 问题内容: 由于Java中运算符优先级的正确性,我感到困惑。我在教程很久以前读到并具有更高的优先级高于OR,这是在提供的答案确认问题。但是,我目前正在使用《 Sun Java 6认证程序员学习指南》学习Java。本书包含以下示例: 我复制并引用了有关编译器如何处理上述代码的解释: 是,然后是或结果 为,然后打印。由于存在短路,因此对表达式进行评估,好像周围有括号。换句话说,它被评估为之前的单个表达

  • 所有的数学运算都认为是从左向右运算的, Java 语言中大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的,也就是从右向左运算。 乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响结果。运算符有不同的优先级,所谓优先级就是在表达式运算中的运算顺序。 一般而言,单目运算符优先级较

  • 问题内容: 在来自http://leepoint.net/notes- java/data/expressions/precedence.html的 一个示例中 以下表达式 被评估为 然后我从http://www.roseindia.net/java/master-java/operator- precedence.shtml 看到了另一个示例 以下表达式 被评估为 我对如何确定在涉及*和/时将首

  • 从高到低顺序如下: ^ not - (一元运算) * / + - ..(字符串连接) < > <= >= ~= == and or

  • 优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。 相同优先级中,按结合顺序计算。大多数运算是从左至右计算,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。 基本的优先级需要记住: 指针最优,单目运算优于双目运算。如正负号。 先乘除(模),后加减。 先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (

  • EL中的运算符都有不同的运算优先级,表7.5列出了EL中的运算符的优先级,上一行运算符的优先级要高于后一行的优先级。对于同一行的运算符,按着运算符在表达式中出现的顺序从左到右依次计算。 表7.5 运算符的优先级 [] . () - (一元)  not  !  empty *  /  div  %  mod +  - (二元) <  >  <=  >=  lt  gt  le  ge ==  !=