首页 > 解决方案 > deepToString 中的这个条件何时会评估为真?

问题描述

我正在查看方法Arrays.deepToString并且无法理解以下条件。

  public static String deepToString(Object[] a) {
    if (a == null)
        return "null";

    int bufLen = 20 * a.length;
    if (a.length != 0 && bufLen <= 0) 
        bufLen = Integer.MAX_VALUE;
    StringBuilder buf = new StringBuilder(bufLen);
    deepToString(a, buf, new HashSet<>());
    return buf.toString();
 }

条件何时 a.length != 0 && bufLen <= 0评估为真?

标签: java

解决方案


如果a.length大于Integer.MAX_VALUE / 20bufLen将溢出并变为负数。

因此代码将其设置为可能的最大整数值。


推荐阅读