微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java操作顺序说明

如何解决Java操作顺序说明

我无法理解 Java 中的操作顺序。算术运算符不是在关系之前评估的。如果是这样,为什么这段代码运行没有错误?不应该先计算 y/z,导致算术异常。

public static void main(String[] args) {
        // Todo Auto-generated method stub
    int x = 10;
    int y = 20;
    int z = 0;
    
    if(x>y && 10 < y/z) {
        System.out.print("Homer");
    }
    
    }

enter image description here

解决方法

&& 运算符短路:即:如果第一次检查失败,则不会进行第二次检查。现在,如果 X 实际上大于 Y,您将在执行第二次检查时得到除以 0 的异常。

出于好奇,我尝试直接输入 10/0,但它仍然按顺序评估了条件。我想这是有道理的,因为您不希望进行任何已经预先确定为错误的实际计算。只会浪费时间。

,

正如 Sotirios Delimanolis 所提到的,我混淆了操作顺序/顺序优先级的定义以及它的使用时间和使用方式。

顺序优先级发挥作用的唯一时间是两个运算符共享一个操作数。例如,1 > 2 + 3 被视为 1 > (2 + 3),而 (1 > 2 && 1 > (2 + 3))) 不共享操作数,因此表达式按顺序执行。一旦进入共享操作数的表达式,计算机就会利用操作顺序来确定首先评估哪个操作。

一个简单的思考方式是:在一个表达式中,您可能有子表达式由连接运算符连接,例如&&、||、&、|、^。这些子表达式按顺序计算,但是在子表达式中,您必须使用顺序优先级来计算先执行哪个运算符。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。