java实用方法系列 从源数组考贝到目标数组 边界检查的问题

来源:互联网 发布:分享到qq好友js代码 编辑:程序博客网 时间:2024/05/22 13:56

前言

在jdk的源码中,用到大量的从源数组考贝到目标数组的操作,既然涉及到数组,那会一定会有数组的越界检查问题。今天就列举出一个,基本思想要掌握

源码

ByteArrayOutputStream中的一个方法

public synchronized void write(byte b[], int off, int len) {        if ((off < 0) || (off > b.length) || (len < 0) ||            ((off + len) - b.length > 0)) {            throw new IndexOutOfBoundsException();        }        ...    }

off指的是从源数组的哪个索引开始
则off < 0 或 off > b.length 发生越界
len则是考贝的长度
则len < 0 或 off + len > b.length 也是错误的

对源码提出的疑问

当off = b.length时,也会发生越界问题,为什么没有加以判断呢?
是有意为之,还是个bug呢?

原创粉丝点击