-
Notifications
You must be signed in to change notification settings - Fork 31
Open
Description
2.1.2(p19)
“l和1长得很像,所以表示一个long型时,以免肉眼看错,建议以L结尾。”
改进为
“字母l和数字1长得很像,所以表示一个long型时,以免肉眼看错,建议以L结尾。”
2.1.2(p20)
最后一段代码:
float f1 =10;
f1 = 10.0; // 为double类型
改进为:
float f1 =10;
f1 = 10.0; // 编译失败,因为10.0为double类型,不能将double转为float
2.1.4(p22)
“加上4为十六进制的数表示”应为“加上4位十六进制的数表示”
8.5.1(p199)
该页第二段代码开头多了“```java”字样。应为;
SynchronizedRGB color = new SynchronizedRGB(0, 0, 0, “Pitch Black”);
…
int myColorInt = color.getRGB(); // 语句1
String myColorName = color.getName(); // 语句2
9.4.4(p218)
该页第二段代码,变量命名有误:
// 重复0次返回空字符串
var string = "foo";
var result2 = string.repeat(0);
assertEquals("", result2);
应为:
// 重复0次返回空字符串
var string = "foo";
var result1 = string.repeat(0);
assertEquals("", result1);
13.11.2(p308)
该页第二段排版有问题。应为:
可以看到,
- supplier方法的实现为“
ArrayList::new
”,创建一个ArrayList对象并返回; - accumulator方法的实现为“
List::add
”,将流中的元素添加进上面创建的ArrayList对象; - combiner方法的实现为“
(left, right) -> { left.addAll(right); return left;}
”,对于两个中间结果容器ArrayList,将其中一个的所有元素添加进另外一个,并返回另外一个ArrayList; - characteristics方法的实现是返回静态常量CH_ID(它是一个包含了IDENTITY_FINISH的集合,标示中间结果是可以直接向最终结果进行强制类型转换的)。
14.5(p319)
第一段排版有问题。应为:
Java 8在List和Set接口中引入了几种方法:
- removeIf删除与谓词匹配的元素。它可用于实现List或Set的所有类(并且从Collection接口继承)。
- replaceAll在List上可用,并使用(UnaryOperator)函数替换元素。
- sort也可在List界面上使用,并对列表本身进行排序。
所有这些方法都会改变调用它们的集合。换句话说,它们改变了集合本身,而不像流操作那样产生新的(复制的)结果。
14.16.2(p330)
最后一段排版有问题。应为:
在上述代码中,
- table代表整个HashMap。装载Node的数组,作为ConcurrentHashMap的数据容器,采用懒加载的方式,直到第一次插入数据的时候才会进行初始化操作,数组的大小总是2的幂次方。采用table数组元素作为锁,从而实现对每一行数据进行加锁,进一步减少并发冲突的概率。
- nextTable是在扩容时使用的,平时为null,只有在扩容的时候才为非null。扩容完成后会被重置为null。
- baseCount保存着整个哈希表中存储的所有节点的个数总和,有点类似于HashMap的size属性。
- 无论是初始化还是扩容哈希表,都需要依赖这个sizeCtl。sizeCtl有以下几种取值:
- 0,默认值;
- -1,代表哈希表正在进行初始化;
- 大于0,相当于HashMap中的threshold,表示阈值;
- 小于-1,代表有多个线程正在进行扩容。
Metadata
Metadata
Assignees
Labels
No labels