
Java编程的逻辑
- 大小:39.3M
- 类型:电子书
- 格式:PDF
- 出版:机械工业出版社
- 作者:马俊昌
- 更新:2022-06-09 16:47:35
这是一个关于Java编程相关的电子书资料,由机械工业出版社出版,作者是马俊昌,介绍了关于Java编程、Java编程逻辑、Java方面,格式为PDF,资源大小39.3M,目前在Java编程类资源综合评分为:9.9分。
内容介绍
Java专家撰写,力求透彻讲解每个知识点,逐步建立编程知识图谱。本书以Java语言为例,由基础概念入手,到背后实现原理与逻辑,再到应用实践,融会贯通。
全书共六大部分,其要点如下。
第一部分(第1~2章)讲解计算机程序的基本执行流程与元素,以及数据背后的二进制表示,帮读者掌握编程的基本概念。
第二部分(第3~7章)讲解面向对象的编程原理与逻辑,涉及类、继承与多态、接口与抽象类、异常与常用基础类,让读者透彻了解Java的重要基础——面向对象。
第三部分(第8~12章)介绍泛型与容器及其数据结构和算法,涵盖泛型、列表和队列、各种Map和Set、堆与优先级队列等。
第四部分(第13~14章)介绍文件处理。涵盖文件的基本概念、二进制文件和字节流、文本文件和字符流、文件和目录操作,以及文件处理的一些高级技术,包括常见文件类型的处理、随机读写文件、内存映射文件、标准序列化机制,以及Jackson序列化。
第五部分(第15~20章)介绍并发,包括线程的传统基础知识和Java并发包。传统基础知识包括线程的基本概念与基本的同步、协作和中断机制;Java并发包涵盖原子变量、显式锁、显式条件、并发容器、异步任务执行服务、同步和协作工具类。
第六部分(第21~26章)介绍动态和声明式编程编程思路、API与技巧,涵盖反射、注解、动态代理、类加载机制、正则表达式、Java 8引入的函数式编程等。
这本书和别的书有什么不同?
简单来说,其他书大多教你怎么用,而这本书帮助你透彻理解,从基本概念到高层框架,剖析实现原理与JDK源代码,融合专业理论与应用实践,使你透彻理解Java编程的实现原理和思维逻辑,融会贯通。具体来说:
1)对于每个编程概念,不仅介绍了语法和用法,还分析了为什么要有这个概念,实现原理是什么,背后的思维逻辑是什么;
2)对于Java的主要API(如Java基础类、各种容器类、文件、并发包等),不仅介绍了用法、示例和应用,还剖析了大量JDK源代码,解释了其内部实现机制;
3)对于实践中常用的系统程序和框架,如键值数据库、消息队列、序列化框架、DI(依赖注入)容器、AOP(面向切面编程)框架、热部署、模板引擎等,本书利用基本API演示了其基本实现原理;
4)本书不仅注重实现原理,同样重视实用性,介绍了很多实践中常用的技术,包含了不少实际开发中积累的经验和教训,使读者可以少走一些弯路;
5)本书虽然是Java语言描述,但以更为通用的编程逻辑为主,融入了很多通用的编程相关知识,如二进制、编码、数据结构和算法、设计模式、操作系统、编程思维等;
6)本书高度注重表述,尽力站在读者的角度,循序渐进、简洁透彻、通俗易懂。
目录
- Contents 目录
- 读者评论
- 前言
- 第一部分 编程基础与二进制
- 第1章 编程基础2
- 1.1 数据类型和变量3
- 1.2 赋值4
- 1.2.1 基本类型4
- 1.2.2 数组类型6
- 1.3 基本运算8
- 1.3.1 算术运算8
- 1.3.2 比较运算10
- 1.3.3 逻辑运算10
- 1.3.4 小结11
- 1.4 条件执行11
- 1.4.1 语法和陷阱11
- 1.4.2 实现原理14
- 1.5 循环16
- 1.5.1 循环的4种形式16
- 1.5.2 循环控制19
- 1.5.3 实现原理20
- 1.5.4 小结20
- 1.6 函数的用法21
- 1.6.1 基本概念21
- 1.6.2 进一步理解函数23
- 1.6.3 小结27
- 1.7 函数调用的基本原理27
- 1.7.1 栈的概念27
- 1.7.2 函数执行的基本原理28
- 1.7.3 数组和对象的内存分配29
- 1.7.4 递归调用的原理30
- 1.7.5 小结31
- 第2章 理解数据背后的二进制33
- 2.1 整数的二进制表示与位运算33
- 2.1.1 正整数的二进制表示33
- 2.1.2 负整数的二进制表示34
- 2.1.3 十六进制35
- 2.1.4 位运算36
- 2.2 小数的二进制表示37
- 2.2.1 小数计算为什么会出错37
- 2.2.2 二进制表示38
- 2.3 字符的编码与乱码39
- 2.3.1 常见非Unicode编码39
- 2.3.2 Unicode编码42
- 2.3.3 编码转换44
- 2.3.4 乱码的原因45
- 2.3.5 从乱码中恢复46
- 2.4 char的真正含义49
- 第二部分 面向对象
- 第3章 类的基础52
- 3.1 类的基本概念52
- 3.1.1 函数容器52
- 3.1.2 自定义数据类型53
- 3.1.3 定义第一个类55
- 3.1.4 使用第一个类55
- 3.1.5 变量默认值57
- 3.1.6 private变量57
- 3.1.7 构造方法58
- 3.1.8 类和对象的生命周期60
- 3.1.9 小结61
- 3.2 类的组合61
- 3.2.1 String和Date61
- 3.2.2 图形类62
- 3.2.3 用类描述电商概念63
- 3.2.4 用类描述人之间的血缘关系65
- 3.2.5 目录和文件66
- 3.2.6 一些说明67
- 3.2.7 小结68
- 3.3 代码的组织机制68
- 3.3.1 包的概念68
- 3.3.2 jar包71
- 3.3.3 程序的编译与链接71
- 3.3.4 小结72
- 第4章 类的继承73
- 4.1 基本概念73
- 4.1.1 根父类Object74
- 4.1.2 方法重写74
- 4.1.3 图形类继承体系75
- 4.1.4 小结80
- 4.2 继承的细节80
- 4.2.1 构造方法81
- 4.2.2 重名与静态绑定82
- 4.2.3 重载和重写83
- 4.2.4 父子类型转换85
- 4.2.5 继承访问权限protected85
- 4.2.6 可见性重写86
- 4.2.7 防止继承final87
- 4.3 继承实现的基本原理88
- 4.3.1 示例88
- 4.3.2 类加载过程90
- 4.3.3 对象创建的过程91
- 4.3.4 方法调用的过程92
- 4.3.5 变量访问的过程93
- 4.4 为什么说继承是把双刃剑94
- 4.4.1 继承破坏封装94
- 4.4.2 封装是如何被破坏的94
- 4.4.3 继承没有反映is-a关系97
- 4.4.4 如何应对继承的双面性97
- 第5章 类的扩展100
- 5.1 接口的本质100
- 5.1.1 接口的概念101
- 5.1.2 定义接口101
- 5.1.3 实现接口102
- 5.1.4 使用接口103
- 5.1.5 接口的细节105
- 5.1.6 使用接口替代继承106
- 5.1.7 Java 8和Java 9对接口的增强106
- 5.1.8 小结108
- 5.2 抽象类108
- 5.2.1 抽象方法和抽象类108
- 5.2.2 为什么需要抽象类109
- 5.2.3 抽象类和接口109
- 5.2.4 小结110
- 5.3 内部类的本质111
- 5.3.1 静态内部类111
- 5.3.2 成员内部类113
- 5.3.3 方法内部类115
- 5.3.4 匿名内部类117
- 5.4 枚举的本质119
- 5.4.1 基础120
- 5.4.2 典型场景122
- 第6章 异常125
- 6.1 初识异常125
- 6.1.1 NullPointerException(空指针异常)125
- 6.1.2 NumberFormatException(数字格式异常)126
- 6.2 异常类128
- 6.2.1 Throwable128
- 6.2.2 异常类体系129
- 6.2.3 自定义异常130
- 6.3 异常处理131
- 6.3.1 catch匹配131
- 6.3.2 重新抛出异常131
- 6.3.3 finally132
- 6.3.4 try-with-resources133
- 6.3.5 throws134
- 6.3.6 对比受检和未受检异常135
- 6.4 如何使用异常135
- 6.4.1 异常应该且仅用于异常情况136
- 6.4.2 异常处理的目标136
- 6.4.3 异常处理的一般逻辑137
- 第7章 常用基础类138
- 7.1 包装类138
- 7.1.1 基本用法139
- 7.1.2 共同点140
- 7.1.3 剖析Integer与二进制算法144
- 7.1.4 剖析Character149
- 7.2 剖析String155
- 7.2.1 基本用法156
- 7.2.2 走进String内部157
- 7.2.3 编码转换157
- 7.2.4 不可变性158
- 7.2.5 常量字符串159
- 7.2.6 hashCode160
- 7.2.7 正则表达式161
- 7.3 剖析StringBuilder162
- 7.3.1 基本用法162
- 7.3.2 基本实现原理162
- 7.3.3 String的 和 =运算符165
- 7.4 剖析Arrays166
- 7.4.1 用法166
- 7.4.2 多维数组171
- 7.4.3 实现原理172
- 7.4.4 小结174
- 7.5 剖析日期和时间174
- 7.5.1 基本概念174
- 7.5.2 日期和时间API175
- 7.5.3 局限性182
- 7.6 随机183
- 7.6.1 Math.random183
- 7.6.2 Random184
- 7.6.3 随机的基本原理185
- 7.6.4 随机密码187
- 7.6.5 洗牌189
- 7.6.6 带权重的随机选择189
- 7.6.7 抢红包算法191
- 7.6.8 北京购车摇号算法192
- 7.6.9 小结193
- 第三部分 泛型与容器
- 第8章 泛型196
- 8.1 基本概念和原理196
- 8.1.1 一个简单泛型类197
- 8.1.2 容器类199
- 8.1.3 泛型方法201
- 8.1.4 泛型接口202
- 8.1.5 类型参数的限定202
- 8.1.6 小结205
- 8.2 解析通配符205
- 8.2.1 更简洁的参数类型限定205
- 8.2.2 理解通配符206
- 8.2.3 超类型通配符208
- 8.2.4 通配符比较211
- 8.3 细节和局限性211
- 8.3.1 使用泛型类、方法和接口211
- 8.3.2 定义泛型类、方法和接口213
- 8.3.3 泛型与数组214
- 8.3.4 小结217
- 第9章 列表和队列218
- 9.1 剖析ArrayList218
- 9.1.1 基本用法218
- 9.1.2 基本原理219
- 9.1.3 迭代221
- 9.1.4 ArrayList实现的接口225
- 9.1.5 ArrayList的其他方法227
- 9.1.6 ArrayList特点分析229
- 9.1.7 小结229
- 9.2 剖析LinkedList229
- 9.2.1 用法230
- 9.2.2 实现原理232
- 9.2.3 LinkedList特点分析238
- 9.3 剖析ArrayDeque239
- 9.3.1 实现原理239
- 9.3.2 ArrayDeque特点分析244
- 第10章 Map和Set245
- 10.1 剖析HashMap245
- 10.1.1 Map接口245
- 10.1.2 HashMap247
- 10.1.3 实现原理247
- 10.1.4 小结256
- 10.2 剖析HashSet256
- 10.2.1 用法256
- 10.2.2 实现原理258
- 10.2.3 小结259
- 10.3 排序二叉树260
- 10.3.1 基本概念260
- 10.3.2 基本算法261
- 10.3.3 平衡的排序二叉树263
- 10.3.4 小结264
- 10.4 剖析TreeMap264
- 10.4.1 基本用法265
- 10.4.2 实现原理267
- 10.4.3 小结273
- 10.5 剖析TreeSet274
- 10.5.1 基本用法274
- 10.5.2 实现原理275
- 10.5.3 小结276
- 10.6 剖析LinkedHashMap276
- 10.6.1 基本用法276
- 10.6.2 实现原理279
- 10.6.3 LinkedHashSet282
- 10.6.4 小结282
- 10.7 剖析EnumMap283
- 10.7.1 基本用法283
- 10.7.2 实现原理285
- 10.7.3 小结287
- 10.8 剖析EnumSet287
- 10.8.1 基本用法287
- 10.8.2 应用场景288
- 10.8.3 实现原理291
- 10.8.4 小结294
- 第11章 堆与优先级队列295
- 11.1 堆的概念与算法296
- 11.1.1 基本概念296
- 11.1.2 堆的算法298
- 11.1.3 小结302
- 11.2 剖析PriorityQueue302
- 11.2.1 基本用法302
- 11.2.2 实现原理304
- 11.2.3 小结309
- 11.3 堆和PriorityQueue的应用309
- 11.3.1 求前K个最大的元素309
- 11.3.2 求中值311
- 11.3.3 小结314
- 第12章 通用容器类和总结315
- 12.1 抽象容器类315
- 12.1.1 AbstractCollection316
- 12.1.2 AbstractList319
- 12.1.3 AbstractSequentialList321
- 12.1.4 AbstractMap323
- 12.1.5 AbstractSet325
- 12.1.6 AbstractQueue325
- 12.1.7 小结326
- 12.2 Collections326
- 12.2.1 查找和替换327
- 12.2.2 排序和调整顺序329
- 12.2.3 添加和修改332
- 12.2.4 适配器333
- 12.2.5 装饰器338
- 12.2.6 小结342
- 12.3 容器类总结342
- 12.3.1 用法和特点342
- 12.3.2 数据结构和算法344
- 12.3.3 设计思维和模式344
- 第四部分 文件
- 第13章 文件基本技术348
- 13.1 文件概述348
- 13.1.1 基本概念和常识348
- 13.1.2 Java文件概述352
- 13.2 二进制文件和字节流355
- 13.2.1 InputStream/OutputStream355
- 13.2.2 FileInputStream/File-OutputStream357
- 13.2.3 ByteArrayInputStream/ByteArrayOutputStream359
- 13.2.4 DataInputStream/Data-OutputStream361
- 13.2.5 BufferedInputStream/BufferedOutputStream363
- 13.2.6 实用方法364
- 13.2.7 小结365
- 13.3 文本文件和字符流365
- 13.3.1 基本概念366
- 13.3.2 Reader/Writer368
- 13.3.3 InputStreamReader/Output-StreamWriter368
- 13.3.4 FileReader/FileWriter369
- 13.3.5 CharArrayReader/Char-ArrayWriter370
- 13.3.6 StringReader/StringWriter370
- 13.3.7 BufferedReader/Buffered-Writer371
- 13.3.8 PrintWriter372
- 13.3.9 Scanner374
- 13.3.10 标准流374
- 13.3.11 实用方法376
- 13.3.12 小结377
- 13.4 文件和目录操作378
- 13.4.1 构造方法378
- 13.4.2 文件元数据378
- 13.4.3 文件操作379
- 13.4.4 目录操作380
- 第14章 文件高级技术383
- 14.1 常见文件类型处理384
- 14.1.1 属性文件384
- 14.1.2 CSV文件385
- 14.1.3 Excel388
- 14.1.4 HTML389
- 14.1.5 压缩文件391
- 14.2 随机读写文件394
- 14.2.1 用法394
- 14.2.2 设计一个键值数据库BasicDB396
- 14.2.3 BasicDB的实现397
- 14.2.4 小结401
- 14.3 内存映射文件402
- 14.3.1 基本概念402
- 14.3.2 用法403
- 14.3.3 设计一个消息队列BasicQueue404
- 14.3.4 实现消息队列406
- 14.3.5 小结409
- 14.4 标准序列化机制409
- 14.4.1 基本用法409
- 14.4.2 复杂对象411
- 14.4.3 定制序列化411
- 14.4.4 序列化的基本原理413
- 14.4.5 版本问题414
- 14.4.6 序列化特点分析414
- 14.5 使用Jackson序列化为JSON/XML/MessagePack415
- 14.5.1 基本概念415
- 14.5.2 基本用法415
- 14.5.3 容器对象418
- 14.5.4 复杂对象419
- 14.5.5 定制序列化420
- 14.5.6 Jackson对XML支持的局限性428
- 14.5.7 小结428
- 第五部分 并发
- 第15章 并发基础知识430
- 15.1 线程的基本概念430
- 15.1.1 创建线程430
- 15.1.2 线程的基本属性和方法432
- 15.1.3 共享内存及可能存在的问题435
- 15.1.4 线程的优点及成本438
- 15.2 理解synchronized439
- 15.2.1 用法和基本原理439
- 15.2.2 进一步理解synchronized443
- 15.2.3 同步容器及其注意事项445
- 15.3 线程的基本协作机制450
- 15.3.1 协作的场景450
- 15.3.2 wait/notify450
- 15.3.3 生产者/消费者模式453
- 15.3.4 同时开始455
- 15.3.5 等待结束456
- 15.3.6 异步结果458
- 15.3.7 集合点461
- 15.3.8 小结462
- 15.4 线程的中断463
- 15.4.1 取消/关闭的场景463
- 15.4.2 取消/关闭的机制463
- 15.4.3 线程对中断的反应464
- 15.4.4 如何正确地取消/关闭线程467
- 15.4.5 小结467
- 第16章 并发包的基石468
- 16.1 原子变量和CAS468
- 16.2 显式锁473
- 16.3 显式条件483
- 第17章 并发容器490
- 17.1 写时复制的List和Set490
- 17.2 ConcurrentHashMap493
- 17.3 基于跳表的Map和Set498
- 17.4 并发队列501
- 第18章 异步任务执行服务505
- 18.1 基本概念和原理505
- 18.2 线程池513
- 18.3 定时任务的那些陷阱518
- 第19章 同步和协作工具类527
- 19.1 读写锁ReentrantReadWrite-Lock527
- 19.2 信号量Semaphore529
- 19.3 倒计时门栓CountDownLatch531
- 19.4 循环栅栏CyclicBarrier533
- 19.5 理解ThreadLocal535
- 第20章 并发总结541
- 20.1 线程安全的机制541
- 20.2 线程的协作机制543
- 20.3 容器类544
- 20.4 任务执行服务546
- 第六部分 动态与函数式编程
- 第21章 反射550
- 21.1 Class类551
- 21.2 应用示例559
- 21.3 反射与泛型561
- 第22章 注解564
- 22.1 内置注解564
- 22.2 框架和库的注解566
- 22.3 创建注解568
- 22.4 查看注解信息570
- 22.5 注解的应用:定制序列化571
- 22.6 注解的应用:DI容器573
- 第23章 动态代理577
- 23.1 静态代理577
- 23.2 Java SDK动态代理579
- 23.3 cglib动态代理584
- 23.4 Java SDK代理与cglib代理比较585
- 23.5 动态代理的应用:AOP585
- 第24章 类加载机制592
- 24.1 类加载的基本机制和过程593
- 24.2 理解ClassLoader594
- 24.3 类加载的应用:可配置的策略597
- 24.4 自定义ClassLoader598
- 24.5 自定义ClassLoader的应用:热部署599
- 第25章 正则表达式603
- 25.1 语法603
- 25.2 Java API612
- 25.3 模板引擎618
- 25.4 剖析常见表达式619
- 第26章 函数式编程628
- 26.1 Lambda表达式628
- 26.2 函数式数据处理:基本用法637
- 26.3 函数式数据处理:强大方便的收集器647
- 26.4 组合式异步编程658
- 26.5 Java 8的日期和时间API668
以上就是本次关于书籍资源的介绍和部分内容,我们还整理了以往更新的其它相关电子书资源内容,可以在下方直接下载,关于相关的资源我们在下方做了关联展示,需要的朋友们也可以参考下。
Java编程相关资源
-
Python编程:从入门到实践 电子书
《Python编程:从入门到实践》是Python3.5编程入门图书(从入门到实践),机器学习,数据处理,网络爬虫热门编程语言,从基本概念到完整项目开发,帮助零基础读者迅速掌握Python编程。
大小:9.85MPython入门
学Java编程,到北京专科培训班
现在随着移动互联网时代和大数据时代的全面发展,Java软件开发又一次闪亮登场,吸引着人们的眼球,对Java软件开发好奇的人是越来越多,想要学Java软件开发的人也是越来越多,除了高校学习,以及自学Java软件开发外,目前最流……