Java调用方法使用||

标签 java

这是我难以理解的行

return (match(regex.substring(1), s)|| match(regex, s.substring(1)));

我的理解是,如果第一个方法为假,它将调用后者。所以我写了一个简单的程序来测试。

public static void main(String[] args)
{
   System.out.println(test(5));
}

public static boolean test(int a)
{
    System.out.println(a);
    if (a>10)
        return true;
    if (a==4)
        return false;
    else
        return (test(a-1) || (test(a+1)));
}

但它只打印 5 4 6 5 4 6...

最佳答案

如果左边或右边的表达式为真,则逻辑或为真。如果左边的表达式为真,计算机语言可以选择不评估右边的表达式以节省时间。事实上,这正是 Java 所做的。

也就是说

match(regex, s.substring(1))

当且仅当

时才会执行
match(regex.substring(1), s)

是假的。

所以返回值为:

  • true 如果 match(regex.substring(1), s) 返回 true,
  • 的返回值匹配(regex, s.substring(1)否则

关于Java调用方法使用||,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15192748/

相关文章:

java - 添加迄今为止的数字(H :mm:ss:SSS) format

java - 使用 Java 8 流进行动态排序?

java - Java 库最佳实践中的抛出异常

Java 方法句柄;在多个位置使用参数

java - 数字签名证书设置颁发者名称

java - 在 JAVA 中通过 TCP 套接字通过网络传输图像不起作用?

java - jvm间通信

java - 如何将 json 文件转换为 ArrayList<String>

java - Apache Tiles 和 Spring MVC 中的全局异常页面

java - 告诉 Java Class<T> T 中有某个方法