描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111573302丛书名: 计算机科学丛书
内容简介
本书基于JavaSE8编写,清晰地介绍了面向对象编程的概念、语言基础等,涵盖了Lambda表达式、类型注解、默认方法、聚合操作、日期/时间API等JavaSE8的新特性,更新了限制恶意小程序的攻击和RIA等相关内容。每章后面的问题和练习可以帮助读者巩固所学知识,此外,附录中还给出Java编程语言认证考试的相关内容。本书可作为高等院校计算机等相关专业的基础教材,也可作为编程初学者和中级程序员的参考资料。
目 录
目 录
The Java Tutorial: A Short Course on the Basics, Sixth Edition
出版者的话
译者序
前言
第1章快速入门 1
1.1关于Java技术 1
1.1.1Java程序语言 1
1.1.2Java平台 2
1.1.3Java技术的功能 3
1.1.4Java技术的优势 3
1.2“Hello World!”实例程序 4
1.2.1用NetBeans IDE开发“Hello World!” 4
1.2.2在Microsoft Windows中开发“Hello World!” 10
1.2.3在Solaris和Linux中开发“Hello World!” 13
1.3“Hello World!”实例程序剖析 15
1.3.1源码注释 15
1.3.2HelloWorldApp类定义 15
1.3.3main方法 16
1.4常见问题(及其解决方案) 16
1.4.1编译器问题 16
1.4.2运行时问题 18
1.5问题和练习:快速入门 19
第2章面向对象的编程概念 21
2.1对象 21
2.2类 22
2.3继承 23
2.4接口 24
2.5包 25
2.6问题和练习:面向对象的编程概念 25
第3章语言基础 27
3.1变量 27
3.1.1命名 28
3.1.2基本数据类型 28
3.1.3数组 32
3.1.4小结 35
3.1.5问题和练习:变量 36
3.2运算符 36
3.2.1赋值运算符、算术运算符和一元运算符 37
3.2.2等式运算符、关系运算符和条件运算符 40
3.2.3位运算符和移位运算符 42
3.2.4小结 42
3.2.5问题和练习:运算符 43
3.3表达式、语句和块 44
3.3.1表达式 44
3.3.2语句 45
3.3.3块 45
3.3.4问题和练习:表达式、语句和块 46
3.4控制流语句 46
3.4.1if-then语句和if-then-else语句 46
3.4.2switch语句 47
3.4.3while语句和do-while语句 51
3.4.4for语句 52
3.4.5分支语句 53
3.4.6小结 56
3.4.7问题和练习:控制流语句 56
第4章类和对象 58
4.1类 58
4.1.1声明类 59
4.1.2声明成员变量 60
4.1.3定义方法 61
4.1.4构建构造器 62
4.1.5将消息传给方法或构造器 63
4.2对象 66
4.2.1创建对象 67
4.2.2使用对象 69
4.3类的更多细节 71
4.3.1从方法返回值 71
4.3.2使用this关键字 73
4.3.3控制对类成员的访问 74
4.3.4类成员 75
4.3.5初始化字段 78
4.3.6小结 79
4.3.7问题和练习:类 79
4.3.8问题和练习:对象 80
4.4嵌套类 81
4.4.1为什么使用嵌套类 81
4.4.2静态嵌套类 82
4.4.3内部类 82
4.4.4覆盖 82
4.4.5序列化 83
4.4.6内部类实例 83
4.4.7局部类和匿名类 85
4.4.8Lambda表达式 92
4.4.9何时使用嵌套类、局部类、匿名类和Lambda表达式 105
4.4.10问题和练习:嵌套类 105
4.5枚举类型 106
4.5.1问题和练习:枚举类型 108
第5章注解 109
5.1注解基础知识 109
5.1.1注解的格式 109
5.1.2注解的使用场景 110
5.2声明注解类型 110
5.3预定义注解类型 111
5.3.1Java语言使用的注解类型 111
5.3.2应用于其他注解的注解 112
5.4类型注解和可插拔类型系统 113
5.5重复注解 114
5.5.1声明重复注解类型 114
5.5.2声明容器注解类型 115
5.5.3检索注解 115
5.5.4设计时的注意事项 115
5.6问题和练习:注解 115
第6章接口与继承 117
6.1接口 117
6.1.1Java语言的接口 117
6.1.2将接口用作API 118
6.1.3定义接口 118
6.1.4实现接口 119
6.1.5将接口用作类型 120
6.1.6进化接口 121
6.1.7默认方法 122
6.1.8小结 129
6.1.9问题和练习:接口 129
6.2继承 130
6.2.1Java平台中类的层次结构 130
6.2.2继承实例 131
6.2.3子类能做什么 132
6.2.4超类的私有成员 132
6.2.5转换对象 132
6.2.6状态、实现和类型的多重继承 133
6.2.7覆盖和屏蔽方法 133
6.2.8多态性 136
6.2.9屏蔽字段 138
6.2.10使用super关键字 138
6.2.11将对象用作超类 140
6.2.12编写final类和方法 142
6.2.13抽象方法和类 143
6.2.14小结 145
6.2.15问题和练习:继承 145
第7章泛型 147
7.1为什么用泛型 147
7.2泛型类型 147
7.2.1一个简单的Box类 148
7.2.2Box类的泛型版本 148
7.2.3类型参数命名约定 148
7.2.4泛型类型的调用和实例化 149
7.2.5钻石运算符 149
7.2.6多个类型参数 149
7.2.7参数化类型 150
7.2.8原生类型 150
7.3泛型方法 151
7.4受限类型形式参数 152
7.4.1多重限制 153
7.4.2泛型方法和受限类型形式参数 154
7.5泛型、继承和子类型 154
7.5.1泛型类和子类型 155
7.6类型推导 156
7.6.1类型推导和泛型方法 156
7.6.2类型推导和泛型类的实例化 157
7.6.3类型推导与泛型类和非泛型类的泛型构造函数 157
7.6.4目标类型 158
7.7通配符 159
7.7.1上界通配符 159
7.7.2无界通配符 160
7.7.3下界通配符 160
7.7.4通配符和子类型 161
7.7.5通配符匹配和辅助方法 162
7.7.6通配符使用指南 164
7.8类型擦除 165
7.8.1泛型类型的擦除 165
7.8.2泛型方法的擦除 166
7.8.3类型擦除效果和桥方法 167
7.8.4不可具体化类型和可变参数方法 168
7.9泛型的局限性 170
7.9.1不能用基本数据类型实例化泛型类型 170
7.9.2不能创建类型参数实例 171
7.9.3不能声明类型为“类型参数”
The Java Tutorial: A Short Course on the Basics, Sixth Edition
出版者的话
译者序
前言
第1章快速入门 1
1.1关于Java技术 1
1.1.1Java程序语言 1
1.1.2Java平台 2
1.1.3Java技术的功能 3
1.1.4Java技术的优势 3
1.2“Hello World!”实例程序 4
1.2.1用NetBeans IDE开发“Hello World!” 4
1.2.2在Microsoft Windows中开发“Hello World!” 10
1.2.3在Solaris和Linux中开发“Hello World!” 13
1.3“Hello World!”实例程序剖析 15
1.3.1源码注释 15
1.3.2HelloWorldApp类定义 15
1.3.3main方法 16
1.4常见问题(及其解决方案) 16
1.4.1编译器问题 16
1.4.2运行时问题 18
1.5问题和练习:快速入门 19
第2章面向对象的编程概念 21
2.1对象 21
2.2类 22
2.3继承 23
2.4接口 24
2.5包 25
2.6问题和练习:面向对象的编程概念 25
第3章语言基础 27
3.1变量 27
3.1.1命名 28
3.1.2基本数据类型 28
3.1.3数组 32
3.1.4小结 35
3.1.5问题和练习:变量 36
3.2运算符 36
3.2.1赋值运算符、算术运算符和一元运算符 37
3.2.2等式运算符、关系运算符和条件运算符 40
3.2.3位运算符和移位运算符 42
3.2.4小结 42
3.2.5问题和练习:运算符 43
3.3表达式、语句和块 44
3.3.1表达式 44
3.3.2语句 45
3.3.3块 45
3.3.4问题和练习:表达式、语句和块 46
3.4控制流语句 46
3.4.1if-then语句和if-then-else语句 46
3.4.2switch语句 47
3.4.3while语句和do-while语句 51
3.4.4for语句 52
3.4.5分支语句 53
3.4.6小结 56
3.4.7问题和练习:控制流语句 56
第4章类和对象 58
4.1类 58
4.1.1声明类 59
4.1.2声明成员变量 60
4.1.3定义方法 61
4.1.4构建构造器 62
4.1.5将消息传给方法或构造器 63
4.2对象 66
4.2.1创建对象 67
4.2.2使用对象 69
4.3类的更多细节 71
4.3.1从方法返回值 71
4.3.2使用this关键字 73
4.3.3控制对类成员的访问 74
4.3.4类成员 75
4.3.5初始化字段 78
4.3.6小结 79
4.3.7问题和练习:类 79
4.3.8问题和练习:对象 80
4.4嵌套类 81
4.4.1为什么使用嵌套类 81
4.4.2静态嵌套类 82
4.4.3内部类 82
4.4.4覆盖 82
4.4.5序列化 83
4.4.6内部类实例 83
4.4.7局部类和匿名类 85
4.4.8Lambda表达式 92
4.4.9何时使用嵌套类、局部类、匿名类和Lambda表达式 105
4.4.10问题和练习:嵌套类 105
4.5枚举类型 106
4.5.1问题和练习:枚举类型 108
第5章注解 109
5.1注解基础知识 109
5.1.1注解的格式 109
5.1.2注解的使用场景 110
5.2声明注解类型 110
5.3预定义注解类型 111
5.3.1Java语言使用的注解类型 111
5.3.2应用于其他注解的注解 112
5.4类型注解和可插拔类型系统 113
5.5重复注解 114
5.5.1声明重复注解类型 114
5.5.2声明容器注解类型 115
5.5.3检索注解 115
5.5.4设计时的注意事项 115
5.6问题和练习:注解 115
第6章接口与继承 117
6.1接口 117
6.1.1Java语言的接口 117
6.1.2将接口用作API 118
6.1.3定义接口 118
6.1.4实现接口 119
6.1.5将接口用作类型 120
6.1.6进化接口 121
6.1.7默认方法 122
6.1.8小结 129
6.1.9问题和练习:接口 129
6.2继承 130
6.2.1Java平台中类的层次结构 130
6.2.2继承实例 131
6.2.3子类能做什么 132
6.2.4超类的私有成员 132
6.2.5转换对象 132
6.2.6状态、实现和类型的多重继承 133
6.2.7覆盖和屏蔽方法 133
6.2.8多态性 136
6.2.9屏蔽字段 138
6.2.10使用super关键字 138
6.2.11将对象用作超类 140
6.2.12编写final类和方法 142
6.2.13抽象方法和类 143
6.2.14小结 145
6.2.15问题和练习:继承 145
第7章泛型 147
7.1为什么用泛型 147
7.2泛型类型 147
7.2.1一个简单的Box类 148
7.2.2Box类的泛型版本 148
7.2.3类型参数命名约定 148
7.2.4泛型类型的调用和实例化 149
7.2.5钻石运算符 149
7.2.6多个类型参数 149
7.2.7参数化类型 150
7.2.8原生类型 150
7.3泛型方法 151
7.4受限类型形式参数 152
7.4.1多重限制 153
7.4.2泛型方法和受限类型形式参数 154
7.5泛型、继承和子类型 154
7.5.1泛型类和子类型 155
7.6类型推导 156
7.6.1类型推导和泛型方法 156
7.6.2类型推导和泛型类的实例化 157
7.6.3类型推导与泛型类和非泛型类的泛型构造函数 157
7.6.4目标类型 158
7.7通配符 159
7.7.1上界通配符 159
7.7.2无界通配符 160
7.7.3下界通配符 160
7.7.4通配符和子类型 161
7.7.5通配符匹配和辅助方法 162
7.7.6通配符使用指南 164
7.8类型擦除 165
7.8.1泛型类型的擦除 165
7.8.2泛型方法的擦除 166
7.8.3类型擦除效果和桥方法 167
7.8.4不可具体化类型和可变参数方法 168
7.9泛型的局限性 170
7.9.1不能用基本数据类型实例化泛型类型 170
7.9.2不能创建类型参数实例 171
7.9.3不能声明类型为“类型参数”
前 言
前 言The Java Tutorial: A Short Course on the Basics, Sixth Edition自2010年年初Oracle公司收购Sun公司以来,Java语言迎来激动人心的时代。正如Java Community Process计划的活动所印证的,Java语言将不断发展。本书基于Java SE 8(Java Platform Standard Edition 8)并引用其API。
相比本书第5版(针对的是Java版本7),第6版有一些新特点:
Lambda表达式使得功能可作为方法参数使用,代码作为数据使用。Lambda表达式描述单个方法接口(也称为功能接口)的实例会更简洁。4.4.8节介绍该专题。
联合使用类型注解和可插拔类型系统可改善类型检测,重复注解使得同样的注解可应用于声明和类型使用。5.4节和5.5节介绍相关专题。
默认方法是接口中实现的方法。使用默认方法,可将新功能添加到接口中,并确保与这些接口的老版本代码兼容。6.1.7节介绍该专题。
聚合操作可在元素流上执行功能型操作,特别是集合上的批量操作,如串行或并行的map-reduce转换。12.3节介绍该专题。
在限制恶意程序和RIA攻击方面有了一些改进。详情可参考第16章、19.5节和19.6节、20.4节等新增或修订章节。
日期/时间API可用于表示日期和时间并处理日期和时间值。这些API支持国际标准日历系统和其他常见的全球日历。新增的第21章介绍该专题。
如果读者准备参加Java SE 8认证考试,本书可提供一定的帮助。附录中列出三个级别的考试,详细介绍每个级别考试覆盖的内容,并指出书中涉及相关信息的章节及有价值的参考资料。注意,这只是参加认证考试要准备的众多内容之一。检查在线教程,下载的认证目标和参考教程的相关章节。
所有材料都经过Oracle Java工程组的成员审校,以确保书中信息都是正确和的。本书也被置于Oracle网站的在线教程内,其网址如下:
http://docs.oracle.com/javase/tutorial本书内容被视为Java的核心教程,是初学者和中级程序员的必学知识。只要掌握这些内容,就可以研究网站上Java平台文档的其余部分。如果你有兴趣开发复杂的富互联网应用(RIA),可以查看JDK中的Java图形用户界面(GUI)工具包JavaFX。相关专题参考第22章。
和以前的版本一样,本书的目的是编写一个易于阅读的实用程序员指南,以协助读者学习使用Java提供的丰富环境来构建应用程序、applet和组件。让我们继续学习编程吧!
读者对象本书同时面向新手和有经验的程序员。
新手通读本书(包括第1章中编译和运行个程序的每一步指令)收获会很大。
有经验的过程式语言(如C语言)程序员可以从面向对象的概念和Java程序语言的特性开始学习。
有经验的程序员可以直接学习高级主题,如泛型、并发和部署等。
本书内容适用于不同层次的程序员学习。
如何使用本书本书可直接从头读到尾或忽略某些主题跳到另一个主题。这些信息的组织有一定的逻辑顺序,并尽可能避免引用前文。
本书例子都在JDK 8中编译。读者需要下载该版本或更新的版本以编译和运行实例。
本书对引用的一些材料提供了在线帮助(如可下载的实例、问题和习题的答案、JDK 8手册和API规范)。
相关链接在文中以脚注形式给出,例如:
8/docs/api/java/lang/Class.html和tutorial/java/generics/examples/BoxDemo.javaOracle网站上Java文档主页的地址如下:
http://docs.oracle.com/javase/访问脚注中给出的在线文件时,需要将脚注中的URL链接在Java文档主页之后,例如:
http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html和http://docs.oracle.com/javase/tutorial/java/generics/examples/BoxDemo.javaJava教程也提供了两种格式的电子书:
移动电子书文件,适用于Kindle。
ePub电子书文件,适用于iPad、Nook和其他支持ePub格式的设备。
每本电子书包含的路径,对应本书的相关章节。读者可通过Java教程主页上的链接“In Book Form”下载电子书:
http://docs.oracle.com/javase/tutorial/index.html欢迎读者给我们反馈,请通过下述教程反馈页面联系我们:
http://docs.oracle.com/javase/feedback.html致谢如果没有Oracle Java工程组不知疲倦地检查本书的技术内容,本书将不能面世。本书第6版的推出,要特别感谢Alan Bateman、Alex Buckley、Stephen Colebourne、Joe Darcy、Jeff Dinkins、Mike Duigou、Brian Goetz、Andy Herrick、Stuart Marks、Thomas Ng、Roger Riggs、Leif Samuelsson和Daniel Smith。
Jordan Douglas和Dawn Tyler快速高效地制作了书中的专业插图。
Janet Blowney、Deborah Owens和Susan Shepard仔细完整地对书稿进行了编辑加工。
感谢团队成员Devika Gollapudi、Ram Goyal和Alexey Zhebel的支持。
后(但同样重要)要感谢Sowmya Kannan、Sophia Mikulinsky、Alan Sommerer和Barbara Ramsey等管理人员的支持。
相比本书第5版(针对的是Java版本7),第6版有一些新特点:
Lambda表达式使得功能可作为方法参数使用,代码作为数据使用。Lambda表达式描述单个方法接口(也称为功能接口)的实例会更简洁。4.4.8节介绍该专题。
联合使用类型注解和可插拔类型系统可改善类型检测,重复注解使得同样的注解可应用于声明和类型使用。5.4节和5.5节介绍相关专题。
默认方法是接口中实现的方法。使用默认方法,可将新功能添加到接口中,并确保与这些接口的老版本代码兼容。6.1.7节介绍该专题。
聚合操作可在元素流上执行功能型操作,特别是集合上的批量操作,如串行或并行的map-reduce转换。12.3节介绍该专题。
在限制恶意程序和RIA攻击方面有了一些改进。详情可参考第16章、19.5节和19.6节、20.4节等新增或修订章节。
日期/时间API可用于表示日期和时间并处理日期和时间值。这些API支持国际标准日历系统和其他常见的全球日历。新增的第21章介绍该专题。
如果读者准备参加Java SE 8认证考试,本书可提供一定的帮助。附录中列出三个级别的考试,详细介绍每个级别考试覆盖的内容,并指出书中涉及相关信息的章节及有价值的参考资料。注意,这只是参加认证考试要准备的众多内容之一。检查在线教程,下载的认证目标和参考教程的相关章节。
所有材料都经过Oracle Java工程组的成员审校,以确保书中信息都是正确和的。本书也被置于Oracle网站的在线教程内,其网址如下:
http://docs.oracle.com/javase/tutorial本书内容被视为Java的核心教程,是初学者和中级程序员的必学知识。只要掌握这些内容,就可以研究网站上Java平台文档的其余部分。如果你有兴趣开发复杂的富互联网应用(RIA),可以查看JDK中的Java图形用户界面(GUI)工具包JavaFX。相关专题参考第22章。
和以前的版本一样,本书的目的是编写一个易于阅读的实用程序员指南,以协助读者学习使用Java提供的丰富环境来构建应用程序、applet和组件。让我们继续学习编程吧!
读者对象本书同时面向新手和有经验的程序员。
新手通读本书(包括第1章中编译和运行个程序的每一步指令)收获会很大。
有经验的过程式语言(如C语言)程序员可以从面向对象的概念和Java程序语言的特性开始学习。
有经验的程序员可以直接学习高级主题,如泛型、并发和部署等。
本书内容适用于不同层次的程序员学习。
如何使用本书本书可直接从头读到尾或忽略某些主题跳到另一个主题。这些信息的组织有一定的逻辑顺序,并尽可能避免引用前文。
本书例子都在JDK 8中编译。读者需要下载该版本或更新的版本以编译和运行实例。
本书对引用的一些材料提供了在线帮助(如可下载的实例、问题和习题的答案、JDK 8手册和API规范)。
相关链接在文中以脚注形式给出,例如:
8/docs/api/java/lang/Class.html和tutorial/java/generics/examples/BoxDemo.javaOracle网站上Java文档主页的地址如下:
http://docs.oracle.com/javase/访问脚注中给出的在线文件时,需要将脚注中的URL链接在Java文档主页之后,例如:
http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html和http://docs.oracle.com/javase/tutorial/java/generics/examples/BoxDemo.javaJava教程也提供了两种格式的电子书:
移动电子书文件,适用于Kindle。
ePub电子书文件,适用于iPad、Nook和其他支持ePub格式的设备。
每本电子书包含的路径,对应本书的相关章节。读者可通过Java教程主页上的链接“In Book Form”下载电子书:
http://docs.oracle.com/javase/tutorial/index.html欢迎读者给我们反馈,请通过下述教程反馈页面联系我们:
http://docs.oracle.com/javase/feedback.html致谢如果没有Oracle Java工程组不知疲倦地检查本书的技术内容,本书将不能面世。本书第6版的推出,要特别感谢Alan Bateman、Alex Buckley、Stephen Colebourne、Joe Darcy、Jeff Dinkins、Mike Duigou、Brian Goetz、Andy Herrick、Stuart Marks、Thomas Ng、Roger Riggs、Leif Samuelsson和Daniel Smith。
Jordan Douglas和Dawn Tyler快速高效地制作了书中的专业插图。
Janet Blowney、Deborah Owens和Susan Shepard仔细完整地对书稿进行了编辑加工。
感谢团队成员Devika Gollapudi、Ram Goyal和Alexey Zhebel的支持。
后(但同样重要)要感谢Sowmya Kannan、Sophia Mikulinsky、Alan Sommerer和Barbara Ramsey等管理人员的支持。
评论
还没有评论。