Java核心技术・卷 I(原书第10版)经典读后感有感
《Java核心技术・卷 I(原书第10版)》是一本由[美] 凯.S.霍斯特曼(Cay S. Horstmann)著作,机械工业出版社出版的平装图书,本书定价:CNY 119.00,页数:711,特精心收集的读后感,希望对大家能有帮助。
《Java核心技术・卷 I(原书第10版)》读后感(一):读到十二章,一些感想
翻译根本就不懂啥时候该英文,啥时候该中文。对我来说,看原版或许比较好。
另外,java库向后兼容做得不错,导致库很多设计很恶心,比如collection和collections,我也不是很理解为什么WindowAdaptor不叫AbstractWindow,标准库还残留vector等垃圾。
我没有大规模项目经验,所以我觉得c++的模板确实比java泛型更简单,毛病更少,更好。正所谓,keep it simple, stupid。
《Java核心技术・卷 I(原书第10版)》读后感(二):强烈不推荐
首先,很不喜欢这本书的排版方式。
1. 在介绍具体的关键字之前,却总是提前使用一些新的关键字。
2. 重复的代码,明明可以直接使用大块的代码,直接引用解释,非得把代码拆块,最后总结,而且拆开的代码还总是加上各种省略号。让人不知所云。
3. 还有讲解的时候缺少逻辑,给人一种堆代码的感觉。没有实际的需求和发展线路,只是简单的介绍一下各种类的各种方法。
4. 最后还有超前使用后面代码的内容,比如swing编程放在了多线程前面这种。
其次,多线程那一章,也就是最后一章,感觉写出来就是给人骂的。混乱的逻辑,看似讲了很多,实则有用的很少。
最后,在联系实际情况的时候,跳跃性太大,给人感觉不是给新手入门的用的。是给有了多年开发经验人看的。然而看这本书的前几张,可以看到,这本书就是向让入门的人可以看懂的。这种情况在泛型拿一章尤为明显。
《Java核心技术・卷 I(原书第10版)》读后感(三):Java核心技术・卷 I(原书第10版)
收到这书还是比较激动的,不知不觉这书都已经更新到第十版了,未来还会有更多 的版本,华章计算机一直致力于把最新技术引进中国。
本书是最新的javase8的全面更新,这本书尽管卷一讲解了基础知识,但是如果本身没有任何语言基础,学习本书还是有一定的难度的。本人基本上是零基础学的,发现有难度,华章计算机出版的另外一本《java语言程序设计基础篇第十版》这本书可以说非常适合零基础的人看。当然如果你有一些C语言或者c++基础,看起来会非常轻松。可以发现本书一大特色是在讲解java的过程中作者举出了c++和c语言进行了对比讲解。我们都知道java和c++是在c语言的基础上发展的,这就是为什么java也叫c--了。我们知道通过对比来分析看书是非常高效的。eg:
c和c++区分变量的声明与定义。
int i=10;是一个定义,而
extern int i;
是一个声明。在java中,不区分变量的声明与定义。
此外,书中列举了API文档,学习java必须会看API文档。书中除了大量代码供练习外,还说明了编程规范风格。在变量初始化那里,作者说:“变量的声明尽可能地靠近变量第一次使用的地方,这是一种良好的程序编写风格。”代码当然是越简洁明了的最好。网上也有不少人说此书的不好,比如说有的地方太简单了,翻译不好,排版不好等等。但是此书是对所有人的,关于翻译既然是翻译就没有十全十美,有能力可以去看原版啦。排版嘛!作者肯定有他的道理。当然,我也只是大致看了一下没有完全看完
《Java核心技术・卷 I(原书第10版)》读后感(四):好书写的不错,我简要总结了75个知识点
这本书自从我看完之后,很多地方给我留下了印象。作为一个学习过c++、php、golang的人。
1)java是区分大小写的
2)java的类名必须和文件名一致。
3)一个文件只能有一个public类。
4)类型长度是固定的。才能实现跨平台。
5)类型是自动转换的,不用像go那样去强转。比如基础类型转化为类,装箱和拆箱,不过这个的比较也会导致问题,推荐equal方法。
6)java支持短路计算。
>>>用0填充高位,而双是符号填充高位。没有<<<。
int<<需要模32,long<<需要模64。所以35实际上是3。67实际上是3。模得过大没有意义。
7)本书基于java8,本书强调和cpp的差异对比。
8)拼接可以自动转换类型。也可以join。
9)字符串不可修改,但是可以赋新值。不可变的好处是可以共享。
10)字符串的==比较是指针行为。所以字符串比较要用equal方法,本质上对象比较都应该用equal方法。
11)如果在一个null值上调用方法,会出现错误。所以要判空,但是用optional也不一定方便。
12)java有个手册可以翻阅。
stringbiulder和stringbuffer(线程安全,多线程编辑)。
13)在Java应用程序的main方法中,程序名并没有存储在args数组中。这个是区分其他语言的地方。
14)声明对象其实没有实例化,近似于一个空指针,一定要new才行。
15)构造器,都是在堆上分配的。但实际上没有想象的那么难管理。
16)访问器,纯取不改。getter。可以用@Data注解来实现。
17)final构造器之后不能再修改。类内部常量都应该标注final。
18)每个类都可以包含自己的main方法来进行单元测试,build之后运行就是执行它的main方法。可以作为一种方式吧。golang里面直接是test文件放一起就行。个人觉得这一点不如go。
19)java的基础类型是值传递传参方式。类参数是引用传递。
20)import *不会意外增加包大小,实际大小。
21)让类不可变,这样就能线程安全。
22)this()初始化自己,super()初始化父类。
23)继承层次,继承链。只能单集成,但是可以多implement。
24)可以用object接收对象,并通过强转回原对象。所有数组都扩展了object对象。还可以用instancef来判断实际类型。
25)写一个安全的equals方法,override。
26)hashcode的结果是,字符串相等的,对象是地址。
27)相等的两个对象需要相同的hashcode。
28)相加需要实现tostring方法。
29)装箱操作和拆箱操作,是利用多态做的折衷。直接判断有严重的bug。
30)java是值传递的。对象是引用复制。
31)想要实现排序服务,必须实现compareTo
32)类优先,当接口和父类有函数冲突时,类优先,如果接口多函数冲突,则必须覆盖实现。如果一个接口中是默认方法,另一个不是默认,也需要覆盖实现。
33)只有5%的标准类有clone,很笨重。
34)lambda表达式就是闭包。不能修改,会有线程安全问题。
内部和外部都不能改。
35)避免多类型装箱??
用美元符号分隔内部和外部类,模拟器不知道。
36)只有内部类可以static。
37)runtimeexception 越界,空指针,类型错误。程序员的错。非受查类型。一定要throws提示受查异常,否则进程就异常退出了。子类不能首先抛出受查异常,所以要捕获掉。不声明throws就不能抛出任何受查异常。
其它异常。网络或者环境的错误。
可以抛出的都是throwable的子类。
38)getCause,用来包装多层嵌套的代码异常。
早抛出,晚捕获。
39)断言是在测试期间运行,在发布时不运行。
40)每个类中放个main,快速启动单元测试。
41)全局默认静态捕获。静态变量是进程级的存储。
42)使用变量E表示集合的元素类型,K和V分别表示表的关键字与值的类型。T(需要时还可以用临近的字母U和S)表示“任意类型”。
43)T extends a & b
44)标签接口,没有方法的接口。
45)虚拟机中没有泛型,只有普通的类和方法。
·所有的类型参数都用它们的限定类型替换。
·桥方法被合成来保持多态。
·为保持类型安全性,必要时插入强制类型转换。
46)不能用类型参数代替基本类型,得是大写的类。
Pair
47)增加注解@SuppressWarnings(“unchecked”)。可以忽略问题。
48)禁止使用带有类型变禁止使用带有类型变量的静态域和方法。
Pair是一对值,Map是集合。
List
@SuppressWamings("unchecked"); 可以用来屏蔽警告;
禁止使用带有类型变量的静态域和方法;
49)T extends Throwable, 可以抛出异常的类型;
throw (T) e; 抛出T类型的异常;
Block.
50)泛型擦除,就读不到泛型的信息了。??那是什么效果呢?
51)通配符?不能用来声明变量;
队列可以用循环数组或者链表来实现。
2021-10-05 22:36:44
52)LinkedList对象不做任何缓存,所以get(0)这种动作,其实是复杂度很高的方法;最好是走hash;★ 因为每次都是全表扫描。
所以走迭代器来遍历,效率高;
53)随机访问最好用数组;
List是数组,所以迭代器或者随机访问都没问题;随机访问有并发限制;迭代器没有并发问题,但是不能在遍历时remove;各有优劣;遍历LinkedList时,使用removeFist()或removeLast()效率最高。但用它们遍历时,会删除原始数据;若单纯只读取,而不删除,LinkedList遍历时建议使用For-each或者迭代器的方式。千万不要通过随机访问去遍历LinkedList!《参考》
LinkedList不要用随机访问,因为性能很差;
54)在不需要同步时,使用ArrayList;线程不安全,但是比较快;
55)如果需要同步,则使用Vector,线程安全;但是耗费时间;
56)JAVA中,hash表用链表实现;当链表条数(桶数)满了,冲突就会很大,一般75%-150%比较合适;
57)慢了就要按装填因子重新rehashed;
hashset就是用散列表来做的;
58)treeset是一个有序集合,使用红黑树实现;
59)优先级队列采用堆排序;
60)SortedMap,错过的东西,我不在乎;
61)枚举方式来遍历:
for(Map.Entry
String k = entry.getKey();
Employee v = entry.getValue();
entry.setValue(one); // 更新为新值;
}
62)弱散列映射,因为桶是活动的,所以用不到的对象不会回收;需要自己删除;
weakhashmap可以周期性的检查队列,删除对应条目;
63)视图:利用原映射做操作,返回了一个collection和map接口的对象;
例如Arrays.asList方法,
而staff.subList(10,20);是前闭后开。
64)视图,就是在原生结构的基础上,返回一个支持某些特性的新代理对象,用来完成特定的操作
比如原来是集合,返回一个list视图,就可以支持list操作;
还有很多不可修改一的视图;
视图有很多限制,比如有些不能修改,不能改变大小,不支持插入(只能删除);
staff.sort(Comparator.reverseOrder())
staff.sort(Comparator.comparingDouble(Employee::getSalary).reversed())
Collections.shuffle(cardArray); // 打乱;
Collections.replaceAll("c++","Java");
65)属性映射;那就是key和vale都是字符串类型,可以保存到文件和加载出来;默认的辅助表;
peek是返回栈顶元素,但不弹出;kafka支持吗?
2021-10-06 21:21:51
66)部署;
jar文件是压缩的,使用的是zip压缩格式;★
jar cvf 00.jar *.class icon.gif
MANIFEST.MF,清单文件;META-INF目录中;
jar cvfm 00.jar resource/ResourceTest.mf resource/*.class resource/*.gif resource/*.txt
java -jar ResourceTest.jar
67)对包进行密封;所有的类要放到一个jar文件中;
System.getProperties(); // user.home;
2021-10-07 09:49:37
68)不要直接调用线程的run方法,而应该是start;
可以用interrupt来请求终止线程,线程内部定时检查isInterrupted(),如果阻塞了就不能及时检查;
69)抛出InterruptedException异常,需要捕获;
new thread,线程成为new状态;
start之后,是runnable状态;
等待调度器,是等待状态;
等待锁,是阻塞状态;
70)可运行而不是运行,因为cpu时间片被切走了,所以实际没有在运行;等回来继续;
线程退出的原因:run结束了;异常未捕获;stop调用杀死(抛出异常),过时了;
71)最好不要用线程优先级;
守护线程不要去访问资源,其他线程退出,才退出;在其他线程启动之前启动;
72)不要字节集管理线程组,有更好的工具;
Runable r = () -> { System.out.print(1); };
Thread t = new Thread(r);
t.start();
73)直接在一个新的线程中执行代码片段;
公平锁偏爱等待时间最长的线程;降低了性能;比常规锁慢;
74)volatile,可能存在并发更新。
final对象需要在构造完成之后才对外可见。
75)java死锁只能重启。
-
Java核心技术·卷I(原书第12版)的《Java核心技术·卷I(原书第12版)》是一本由[美] 凯·S.霍斯特曼(Cay S.Horstmann)著作,机械工业出版社出版的平装图2022-09-28阅读全文
-
Java代码审计 入门篇读后感精选《Java代码审计 入门篇》是一本由徐焱 / 陈俊杰 / 李柯俊 / 章宇 / 蔡国宝著作,人民邮电出版社出版的453图书,本书定2022-09-17阅读全文
-
Java编程的逻辑的读后感大全《Java编程的逻辑》是一本由马俊昌著作,机械工业出版社出版的平装图书,本书定价:99,页数:675,特精心收集的2022-12-25阅读全文
-
《Java面向对象编程 (第2版)》读后《Java面向对象编程 (第2版)》是一本由孙卫琴著作,电子工业出版社出版的平装图书,本书定价:89.00,页数:736,特2023-01-01阅读全文
-
Java多线程编程实战指南(核心篇《Java多线程编程实战指南(核心篇)》是一本由黄文海著作,电子工业出版社出版的平装图书,本书定价:89,页数2023-01-15阅读全文
-
重学Java设计模式(全彩)的读后《重学Java设计模式(全彩)》是一本由付政委著作,电子工业出版社出版的367图书,本书定价:128,页数:2021-5-1,2022-09-27阅读全文
-
《Java核心编程》的读后感大全《Java核心编程》是一本由柳伟卫著作,清华大学出版社出版的平装图书,本书定价:89,页数:387,特精心收集的读2022-10-31阅读全文
-
了不起的JavaScript工程师:从前端《了不起的JavaScript工程师:从前端到全端高级进阶》是一本由朱德龙 著著作,电子工业出版社出版的平装图书,本书2022-11-17阅读全文
-
On Java 中文版 基础卷的读后感大全《On Java 中文版 基础卷》是一本由[美] Bruce Eckel著作,人民邮电出版社出版的精装图书,本书定价:129.8,页数:840,2022-08-31阅读全文
-
《码出高效:Java开发手册》读后《码出高效:Java开发手册》是一本由杨冠宝 / 高海慧著作,电子工业出版社出版的平装图书,本书定价:99.00元,页2022-12-08阅读全文