java - 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
评估为真?
解决方案
如果a.length
大于Integer.MAX_VALUE / 20
,bufLen
将溢出并变为负数。
因此代码将其设置为可能的最大整数值。
推荐阅读
- android - 在 Twilio 节点库的 AccessToken 对象中添加多个 VoiceGrant
- python-3.x - 为什么python函数中的全局变量在不同场景下的工作方式不同?
- python - 神经网络与随机森林的性能差异
- c++ - epoll_wait 即使带有 EPOLLET 标志也返回 EPOLLOUT
- java - 为什么我的回收站视图在项目之间有如此多的分离?
- javascript - 为什么 array.push 会覆盖整个数组?
- reactjs - React 路由器 5:知道何时手动更改 URL
- java - 多配置文件项目的 Maven 版本控制
- vbscript - 按顺序处理文件夹(1、2、3、4 等) - 压缩文件夹
- sql - 查询以查找没有唯一键的表