abstract: java.nio.Buffer.java源碼中有如下代碼:static void checkBounds(int off, int len, int size) { if ((off | len | (off&
java.nio.Buffer.java源碼中有如下代碼:
static void checkBounds(int off, int len, int size) { if ((off | len | (off + len) | (size - (off + len))) < 0) throw new IndexOutOfBoundsException(); }
對(duì)
if ((off | len | (off + len) | (size - (off + len))) < 0)
很好奇,如果我自己寫,可能會(huì)寫成
if (off < 0 || len < 0 || (off + len) < 0 || (size- (off + len)) < 0)
按位或運(yùn)算大家都知道,所以如果有一個(gè)數(shù)是負(fù)數(shù),則結(jié)果也是負(fù)數(shù)。