![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码解析
Kring_mzx
学而不思则罔,思而不学则殆
展开
-
Stream Pipelines
Stream Pipelines首先回顾一下容器执行Lambda表达式的方式,以ArrayList.forEach()方法为例,具体代码如下:// ArrayList.forEach()public void forEach(Consumer<? super E> action) {…for (int i=0; modCount == expectedModCount && i < size; i++) {action.accept(elementData[i]原创 2020-07-03 14:56:34 · 290 阅读 · 0 评论 -
如何选择Arrays.asList()、Collections.singletonList()?
Arrays.asList()、Collections.singletonList()Arrays.asList(strArray)返回值是仍然是一个可变的集合,但是返回值是其内部类,不具有add方法,可以通过set方法进行增加值,默认长度是10Collections.singletonList()返回的是不可变的集合,但是这个长度的集合只有1,可以减少内存空间。但是返回的值依然是Collections的内部实现类,同样没有add的方法,调用add,set方法会报错java.lang.Unsuppor原创 2020-06-16 17:06:24 · 3016 阅读 · 0 评论 -
三目运算符NPE
复合三目运算符问题:a?b:c?d:e条件运算符是右结合的,也就是说,从右向左分组计算。例如,a?b:c?d:e 将按a?b:(c?d:e)执行,从右向左计算,先(c?d:e)再a?b:(c?d:e)。注意使用过程中,引起的自动拆箱引起的NPE异常:当第二位和第三位表达式都是包装类型的时候,该表达式的结果才是该包装类型,否则,只要有一个表达式的类型是基本数据类型,则表达式得到的结果都是基本数据类型。如果结果不符合预期,那么编译器就会进行自动拆箱。boolean flag = true; boo原创 2020-05-21 15:42:33 · 531 阅读 · 0 评论 -
Integer解读
涉及自动装箱和拆箱的过程。源码:1、使用自动装箱(Integer i = 1)方式创建Integer对象时,会使用valueOf进行Integer对象的初始化,此时,会调用IntegerCache.high,这是需要对IntegerCache这个静态内部类进行初始化。2、IntegerCache类中有一个cache数组,在加载IntegerCache的时候,会将-128到127的Int...原创 2020-04-23 16:56:34 · 1299 阅读 · 0 评论