读书笔记——《Java核心技术 卷一》--第一章


title: 读书笔记——《Java核心技术 卷一》--第一章 Java程序设计概述 date: 2022-10-24 23:20:00 tags: 小林同学


读书笔记——《Java核心技术 卷一》

第一章 Java程序设计概述

Java程序设计平台

  1. Java是一个完整的平台提供一个庞大的库,包含了很多可重用代码,例如数据库存取功能,无需手动编写代码提供了一个高质量执行环境,这个环境提供了诸如安全性、跨操作系统的可移植性以及自动垃圾收集等服务
  2. 功能齐全具备赏心悦目的语法和易于理解的语义(原话)
  3. Java存在兼容性问题(作者的想法)为了与现存代码的兼容,新增的特性就没有原有特性那么简洁精炼

Java“白皮书”的关键术语

  1. 简单性
  2. 语法上的简单
  3. 剔除了C++中许多很少使用又难以使用和理解的特性,例如头文件、指针运算、结构、联合、操作符重载、虚基类等,因为这些特性带来的麻烦远远多于它的好处
  4. 另一个方面是“小”
  5. 基本的解释器以及类支持大约40KB基础的类库和对线程的支持,大约再增加175KB当然,这是在当时刚发布时的情况了,由于不断发展,类库已经相当庞大了,现在提供了一个Java微型版(Java Micro Edition),适用于嵌入式设备
  6. 面向对象
  7. 面向对象设计是一种程序设计技术,重点放在数据(即对象)与对象的接口上
  8. 比方:一个“面向对象”的木匠始终首先关注最终的成品:”椅子“,其次才是制作的工具
  9. 与C++的对比
  10. 面向对象特性两者旗鼓相当Java不同之处在于可以接口多重继承,同时接口也是更简单的概念,提供了更加丰富的运行时自省功能
  11. 分布式J
  12. ava提供一个例程库,用于处理TCP/IP协议,因而可以通过url访问网络上的对象,就像访问本地文件一样便捷
  13. 健壮性
  14. Java强调前期的问题检测,后期的运行时检测,其编译器能够检测出在其它语言中仅在运行时才能够检测出来的问题Java采用的指针模型能够消除重写内存的可能性,而C++就会出现这种由于指针bug引起的内存冲突
  15. 安全性
  16. 为什么要重视安全性?这是由于Java是要适用于分布式网络环境的,重视安全性是必然的
  17. 能够防范各种攻击手段
  18. 蠕虫和病毒:运行时堆栈溢出
  19. 破坏进程空间之外的内存
  20. 未经授权读写文件
  21. 小插曲,Java对不可信代码下载的态度转变
  22. 起初的态度是,“放马过来吧,我们有沙箱环境“,但是不久后就猛地打脸了,Java的安全模型尽管相当复杂,但黑客却擅长从中找出小漏洞,导致不可信的代码直接攻击到主系统,sum以及oracle公司为了修复漏洞也是经历了一段很艰难的日子
  23. 至此,Java浏览器不再信任任何不可信代码,除非代码有数字签名以及经过用户的同意
  24. 体系结构中立
  25. 为“虚拟机”生成代码,它就是大名鼎鼎的字节码文件,这是一种编译过的代码,与特定的计算机体系结构无关主要有两个优点即时编译:将执行最频繁的字节码序列转换为机器码,提升执行效率. 检查指令序列的行为,增强安全性
  26. 可移植性
  27. Java数值类型有固定的字节数,例如int永远是32位的整数,消除了代码移植时的主要问题二进制数字以固定格式进行存储和传输,消除了字节顺序的困扰,字符串采用标准的Unicode格式存储绝大部分的Java类库都很好支持平台独立性,而不必操心底层操作系
  28. 解释型J
  29. ava解释器可以直接执行Java字节码Java9提供了Jshell工具支持快捷且具备探索性的编程
  30. 高性能
  31. 上面讲到,Java编译器具备即时编译的优点监控哪些代码频繁执行并优化执行速度如果一个特定函数不会被覆盖,就可以使用内联,即消除函数调用
  32. 多线程
  33. 多线程有什么作用?因为摩尔定律(自行百度)即将走到尽头,不再追求更快的处理器了,而是着眼于获得更多的处理器,Java是第一个支持并发程序设计的主流语言并且表现很出色
  34. 动态性
  35. 能够适应不断发展的环境,类库中可以自由添加新方法和实例变量,对客户端没有任何影响支持为正在运行的程序增加代码,可以十分简单找到运行时类型信息

Java applet与Internet

  • 可自行了解,applet这块已经淘汰不知道多久了。。

Java发展简史

版本

年份

特性

接口和类个数

1.0

1996

语言本身

211

1.1

1997

内部类

477

1.2

1998

strictfp修饰符

1524

1.3

2000

1840

1.4

2002

断言

2723

5.0

2004

泛型类、循环、可变元参数、自动装箱、元数据、枚举、静态导入

3279

6

2006

3793

7

2011

switch支持字符串、菱形运算符、二进制字面量、异常处理增强

4024

8

2014

lambda表达式、包含默认方法的接口、流和时间/时间库

4240

9

2017

模块、其他的语言和类库增强

6005

关于Java的常见误解以及解释

  1. Java是HTML的扩展
  2. Java是一种程序设计语言,HTML是一种描述网页结构的方式,不考虑applet的HTML扩展,两者没有任何联系
  3. 使用XML,所以不需要Java
  4. Java是一种程序设计语言,XML只是一种描述数据的方式,而Java API对XML处理提供了很好的支持
  5. Java是一种十分容易学习的程序设计语言
  6. 作者大大原话:像Java这种功能强大的语言大都不太容易学习,必须将编写玩具式程序的轻松与开发实际项目的艰难区分
  7. Java将成为适用于所有平台的通用性编程语言
  8. 理论上将有可能,但实际上在其它领域其它语言会更合适比如浏览器中的处理完全由JavaScript掌控window程序通常都用C++或C#编写Java在服务器端或跨平台客户端的应用领域则很有优势
  9. Java只不过是另外一种程序设计语言
  10. Java的成功缘于其类库能够轻松完成原本由一定难度的开发任务,例如网络连接、Web应用和并发编程,减少了指针错误,这是个额外的好处,但是这些并不是Java成功的全部原因
全部评论

相关推荐

如题,鼠鼠快碎掉了。鼠鼠正在投暑期和日常的实习,可能是因为简历太差吧,好多初筛都没有过,所以其实格外珍惜每一次的约面。尤其鼠鼠是八股选手,但凡碰到喜欢问项目的面试官是直接速通鼠掉。那是一个万里无云的晚上,鼠鼠接到tx某子公司的约面,虽然没算法题但是问得我汗流浃背,面试官从我的八股批判到我的项目继而批判到我的实习,感觉基本上除了八股这种特定答案之外每一个问题都要质问我,尤其是询问到实习的时候我解释完之后直接来了一句“那你实习也啥也没做啊”,鼠鼠直接原地碎掉。之后的问题鼠鼠也不太记得了,大部分都是直接吟诵咒语,肌肉记忆直接不过脑子。因为接二连三的压力鼠鼠直接摆烂了,回答的时候也不太看屏幕直接开始搓...
机器人为什么是猫呀:楼主要自信。好的面试官是会照顾面试者情绪的,不会直接说那么伤人的话。面试表现其实很看自己的心态跟情绪,这些又和面试官的反馈很相关。而且有些面试官很高傲,不求甚解,自认为你的东西看一眼很简单,就不会听你说了,却没有从一个没有丰富工作经验的人的角度去思考。楼主不要因为这些影响心态,不要怀疑自己,只要遇到一个“合适”的面试官就会好很多的。
点赞 评论 收藏
分享
03-16 22:00
武汉大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务