Когда это условие в 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 оценивается как истинное?

Всего 2 ответа


Если a.length больше Integer.MAX_VALUE / 20 , bufLen будет переполнение и стать отрицательным.

Таким образом, код устанавливает максимально возможное целочисленное значение.


Он вернет true, только если a.length очень велика, поэтому 20 * a.length не может соответствовать типу данных int . Однако я не уверен, что это когда-либо случится.


Есть идеи?

10000