1
blindpirate 2018-07-20 11:25:16 +08:00 1
老梗了,奇技淫巧
|
2
specita 2018-07-20 12:24:13 +08:00
我理解的是,integer 做++操作的时候,如果在 cache 范围内,只是把数组下标加 1 咯...
|
3
promise2mm 2018-07-20 12:50:31 +08:00 2
看了一下 Integer 的 valueOf 源码:
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } --> 伪代码: if i in[-128, 127] return cache[i + 128]; return new Integer(i); 现在把 cache[130] -> cache[131]; 即当 for 循环到 2 的时候, 调用 valueOf(2) == 3 直接跳过了 2. |
4
feiyuanqiu 2018-07-20 13:03:02 +08:00 via Android
原理楼上都说了,就说个题外话,知乎的轮子哥真是带坏了好多人 demo 代码的命名
|
5
hugedata OP @feiyuanqiu 知乎的轮子哥是谁?
|
6
seancheer 2018-07-20 14:20:17 +08:00
@hugedata 指的是你那种 fuck,shit 之类的方法,变量命名方式。。。这个人在知乎回答某些编程问题时经常这么干。
|
7
alamaya 2018-07-20 14:58:34 +08:00
你这一堆反射正常人不用翻源码都看出来有坑
|
8
98jiang 2018-07-20 19:50:25 +08:00
就是把 2 换成 3 了吧
|