《写给大忙人看的Java核心技术》试读感想
一 期待惊喜
作为一个Java开发者,Java并发编程是Java的优势,试读章节中没有给出,但是本书简介中简单的介绍了一下:使用Java类库中现成的并行算法和线程安全的数据结构,彻底改变程序员处理并发编程的方式,而且书中还提供了示例去让我们如何使用强大的类库特性代替那些易出错、低水平的数据结构。
通过目录发现本书不仅仅讲了Java的基础和思想,还附带一些项目实战中所学的知识。如第5章 5.3 记录日志中 教你如何采用Logger、日志的配置、日志级别和格式化等;第14章 编译与脚本 这章节讲述了一些脚本分类和使用。这些都是Java开发者在开发项目中所用到并必须了解的知识。
很期待,相信Cay S.Horstmann的这本著作能让我更深入的了解Java和学习新的知识。
二 试读理解
试读章节中给出了第2、3章,着重讲一下关于 2.1使用对象和3.4 Lambda表达式 我的理解。
2.1使用对象
Java思维中万物皆是对象,书中2.1首先通过一个输出日历的问题的抛出,来讲述Java是如何使用日历的。
LocalDate date = LocalDate.of(year,month,1);
正是这样,Java就是通过一系列对象提供的一系列功能来解决现实中的需求,降低了耦合性,提高了重用性。
2.1.2 对象引用,Java与C不同,C中变量可以持有对象,Java变量只能持有对象的引用,变量和对象分别在不同的存储区域,
变量存放在堆栈中,对象通过new关键字生成存放在堆中。这些常识书中没有指出,其实正是应对了简介中说的本书不适合系统向导,是让Java开发者更进一步深入了解Java。
两个变量指向一个对象,如图
大部分时候共享对象是高效和方便的,但是必须了解到,通过任何一个引用,都可以修改共享对象。这提示了我们在程序处理中如果多个引用指向一个对象,那我们处理中一定要考虑到对象数据使用中是否会出现错误,是否按我们规划的正确执行。
date = LocalDate.of(year,month,1);
date = date.plusDay(1);
第一个赋值后,date引用月的第一天。调用plusDay产生了新的LocalDate对象,并且在第二次赋值后,date变量引用新的对象。那么第一个对象会发生什么?通过问题的抛出,书中讲了Java中NB的一点,Java垃圾回收机制,它是完全自动的,正是在此基础上程序员从不需要担心释放内存。
3.4 Lambda表达式
Lambda表达式是Java SE 8中一个重要的新特性。
Lambda表达式是一种便捷的语法去创建实例。
基本的Lambda例子
// 1. 接受2个参数(数字),并返回他们的和值
(x, y) -> x + y
// 2. 接受一个 string 对象,并在控制台打印,不返回任何值
(String s) -> System.out.print(s)
//参数为字符串,后面也可以用代码块
(String s) -> {return s.length();}
入门使用:
List<String> list = new ArrayList();
list.add("11");
list.add("22");
// 以前的循环方式
for (String s : list) {
System.out.println(s);
}
// 使用Lambda表达式以及函数操作
list.forEach((s) -> System.out.println(s));
理解:Lambda表达式可以实现跟方法一样的功能,简化了代码的开发量。
三 试读感受
优点
书中深入浅出的讲述了Java的基本常识和Java SE 8的新特性,比较了Java和C语言的不同之处,让读者更深入的去了解Java背后的思想,为什么要这样做,起源在哪里,提高了我对Java思想的理解。
书里面的语言非常精炼,读下来觉得每个片段都是作者和译者深思熟虑过的。
缺点
书中在讲述Java SE 8的新特性的时候,比如Lambda表达式,都是局部的代码片段,没有完整的代码片段,感觉理解起来比较吃力。