《Java核心技术(原书第10版) 卷Ⅰ》个人心得与总结

《 Java核心技术(卷1)第十版》 总结

拖了这么久,终于来了。我发现在学习上很多时候我真是拖延患者。一给自己安排的任务重,学习效率低下,二是计划总赶不上变化。
大概花了有2,3个月的时间吧,从1月份到3.5号,完整地看完了这本书,中间断断续续。整体看完后的几个感受吧。

  • 基础知识讲得很细,很全面,但这样也导致了不太容易阅读,也会比较枯燥。所以我在看一些章节的时候会很费劲。(当然这里感觉也有一些翻译的问题)
  • 在第12章 图形界面swing 以及后面的一些内容也用到swing或awt,这部分内容要替换成二卷的文档读写和流就好了。(不过看了看新出版的第11版的目录,好像结构还是这样,难道现在很多国外公司机构还在用swing吗?)
  • 至于缺少习题支持,我觉得可以理解,因为这本身应该算是本工具书,而且在对应的知识重点都有代码实例,导致这本书已经很厚了,如果再加上习题会太厚。作为工具书也会比较影响阅读体验。
  • 本书在很多地方都在与C++作对比,这种写法我看有些读者在吐槽。首先要申明一下,我是懂一些C++(起码懂得C++的基本语法)的。然后这里想要说明,为什么会有很多这种比较是由于java的发展历程决定的,这里有历史的原因,java的出现一开始就是为了想解决一些C/C++的问题,比如C的指针,内存管理问题,C++的一些语法显得过于复杂等等,学过C/C++ java的人都应该会觉得java比前二者要好学很多。我通过对比知道了java的很多特性,在哪些地方做了改进。通过这种比较,会加深对java的理解,会更知其所以然而不只是知其然吧。
  • 然后这里重点提一下最后一章并发编程,对于我这种之前没有java并发基础的人来说确实是看得有些云里雾里,不过看到很多大神说java并发需要专门看一本《java并发编程实战》,这里先Skip了。

后面对一些重点知识,主要是当时我不会或者比较模糊的一些知识做一下梳理和总结。

一.概述

  1. Java的面向对象特性与C++旗鼓相当,与C++主要的不同在于多重继承(java中用接口取代)。与C++相比,Java提供了更丰富的自省功能(我认为主要是指java反射机制)。
  2. Java11个特性之高性能:内联:final修饰的函数(这里可以参考链接)(https://blog.csdn.net/liu1324457514/article/details/57112177)
    注:final关键字只是告诉编译器,在编译的时候考虑性能的提升,可以将final函数视为内联函数。但最后编译器会怎么处理,编译器会分析将final函数处理为内联和不处理为内联的性能比较了。(和垃圾处理机制System.gc类似,程序员只有建议权而没有决定权)

三.Java基本程序设计结构

  1. 关于编码:Unicode是UTF-8,UTF-16等具体编码方案的统称。
    一些辅助字符可能需要两个代码单元code unit来表示(一个char类型描述UTF-16下的一个代码单元),所以一个String里如果有特殊字符的话,String.length()可能并不准确(返回的是有多少个char)这种情况下严谨的方法是String.codePointCount()(返回码点code point个数) 详见P49
  2. 读:Scanner in=new Scanner(System.in);console适用于从控制台读取密码P57
  3. 多维数组:Java里的数组其实都是一维,里面存着指针再指向下一维

四.对象与类

  1. 日期与时间:Date表示时间点,LoalDate日历表示法(Date一些方法已被不建议使用,Date类好像都不建议使用)。
  2. 当返回一个可变对象时如(Date),最好调用clone方法。
  3. 使用静态工厂方法而不使用构造器方法的两个原因:
  • 无法命名构造器
  • 无法改变构造对象类型

五.继承(更多适合开发软件工具人员了解)

  1. getClass()!=otherObject.getClass() 检测this与otherObject必须为同一个类;
    otherObject instanceof ClassName 检测otherObject是ClassName的子类即可
    P169编写equals()方法的建议
  2. 反射:主要用于构造工具

java.lang.Class类

	String cl = "java.util.Random";
    Object r = Class.forName(cl).newInstance();
    等价于 Random r = new Random();

用反射分析类
java.lang.reflect包:里面有Field、Method、Constructor由Class get…()来

运行时用反射分析对象
p201 toString()方法源码//调用以上一些方法
p203 Array.copyOf()方法实现 //调用Class的getComponentType(),Array的newInstance,getLength()…

java.lang.reflect.Method:
4.
5. (未完待续)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值