Java基础入门(第2版)

更多详情


内容简介: 本书从初学者的角度详细讲解了Java基础中的核心技术。全书共11章,包括Java开发环境的搭建及其运行机制、基本语法、面向对象的思想、常用API、集合、I/O、GUI、JDBC、多线程和网络编程等内容。使用通俗易懂的语言对每个知识点进行阐述,并结合典型、翔实的案例进行演示说明。本书在第1版的基础上进行改版升级,增加了某些重要知识的原理剖析,能够让读者知其然更知其所以然。同时,采用目前较为通用的JDK 8版本进行编写,引入了一些新的Lambda表达式、Stream聚合操作、NIO、JavaFX等知识点,能够让读者尽早掌握一线实用技术,为Java基础学习打下坚实基础。
本书附有配套视频、源代码、习题、教学PPT、教学设计等资源。另外,为了帮助初学者更好地学习本书讲解的内容,还提供了在线答疑服务,希望可以帮助更多的读者。
本书既可作为高等院校本、专科计算机相关专业的教材,也可作为社会培训教材,是一本适合初学者学习和参考的读物。

目录:
第1章Java开发入门1
1.1Java概述1
1.1.1什么是Java1
1.1.2Java语言的特点2
1.2JDK的使用3
1.2.1什么是JDK3
1.2.2安装JDK3
1.2.3JDK目录介绍6
1.3系统环境变量7
1.3.1PATH环境变量7
1.3.2CLASSPATH环境变量9
1.4第一个Java程序9
1.5Java的运行机制12
1.6Eclipse开发工具13
1.6.1Eclipse概述14
1.6.2Eclipse的安装与启动14
1.6.3使用Eclipse进行程序开发17
1.7本章小结22
1.8习题23
第2章Java编程基础25
2.1Java的基本语法25
2.1.1Java的基本语法格式25
2.1.2Java中的注释26
2.1.3Java中的关键字28
2.1.4Java中的标识符28
2.2Java中的变量与常量29
2.2.1变量的定义29
2.2.2变量的数据类型30
2.2.3变量的类型转换32目录Java基础入门(第2版)2.2.4变量的作用域36
2.2.5Java中的常量37
2.3Java中的运算符41
2.3.1算术运算符41
2.3.2赋值运算符42
2.3.3比较运算符44
2.3.4逻辑运算符44
2.3.5位运算符 46
2.3.6条件运算符48
2.3.7运算符的优先级49
2.4选择结构语句50
2.4.1if条件语句50
2.4.2switch条件语句54
2.5循环结构语句56
2.5.1while循环语句56
2.5.2do…while循环语句57
2.5.3for循环语句58
2.5.4循环嵌套60
2.5.5跳转语句62
2.6数组64
2.6.1数组的定义64
2.6.2数组的常见操作69
2.6.3多维数组73
2.7本章小结75
2.8习题75
第3章面向对象(上)77
3.1面向对象概述77
3.2Java中的类与对象78
3.2.1类与对象的关系78
3.2.2类的定义79
3.2.3对象的创建与使用81
3.2.4访问控制符84
3.3类的封装85
3.3.1为什么需要封装85
3.3.2如何实现封装86
3.4方法的重载和递归87
3.4.1方法的重载87
3.4.2方法的递归89
3.5构造方法90
3.5.1构造方法的定义90
3.5.2构造方法的重载92
3.6this关键字95
3.7static关键字97
3.7.1静态变量97
3.7.2静态方法99
3.7.3静态代码块100
3.8本章小结101
3.9习题101
第4章面向对象(下)104
4.1类的继承104
4.1.1继承的概念104
4.1.2重写父类方法106
4.1.3super关键字107
4.1.4Object类110
4.2final关键字112
4.2.1final关键字修饰类112
4.2.2final关键字修饰方法113
4.2.3final关键字修饰变量114
4.3抽象类和接口116
4.3.1抽象类116
4.3.2接口117
4.4多态121
4.4.1多态概述121
4.4.2对象的类型转换122
4.5内部类126
4.5.1成员内部类126
4.5.2局部内部类127
4.5.3静态内部类128
4.5.4匿名内部类129
4.6JDK 8的Lambda表达式131
4.6.1Lambda表达式入门131
4.6.2函数式接口132
4.6.3方法引用与构造器引用134
4.7异常138
4.7.1什么是异常138
4.7.2异常的类型140
4.7.3try…catch和finally141
4.7.4throws关键字143
4.7.5throw关键字145
4.7.6自定义异常147
4.8垃圾回收148
4.9本章小结151
4.10习题152
第5章Java中的常用类154
5.1String类与StringBuffer类154
5.1.1String类的初始化154
5.1.2String类的常见操作156
5.1.3StringBuffer类162
5.2System类与Runtime类164
5.2.1System类164
5.2.2Runtime类168
5.3Math类与Random类170
5.3.1Math类170
5.3.2Random类171
5.4包装类173
5.5日期与时间类176
5.5.1Date类176
5.5.2Calendar类176
5.5.3JDK 8的日期与时间类180
5.6格式化类182
5.6.1DateFormat类182
5.6.2SimpleDateFormat类184
5.6.3DateTimeFormatter类186
5.7本章小结189
5.8习题189
第6章集合191
6.1集合概述191
6.2Collection接口192
6.3List接口193
6.3.1List接口简介193
6.3.2ArrayList集合193
6.3.3LinkedList集合195
6.4Collection集合遍历197
6.4.1Iterator遍历集合197
6.4.2foreach遍历集合199
6.4.3JDK 8的forEach遍历集合 202
6.5Set接口203
6.5.1Set接口简介203
6.5.2HashSet集合204
6.5.3TreeSet集合207
6.6Map接口212
6.6.1Map接口简介212
6.6.2HashMap集合213
6.6.3Map集合遍历216
6.6.4TreeMap集合220
6.6.5Properties集合222
6.7泛型223
6.8常用工具类225
6.8.1Collections工具类225
6.8.2Arrays工具类228
6.9聚合操作232
6.9.1聚合操作简介232
6.9.2创建Stream流对象233
6.9.3Stream流的常用方法235
6.9.4Parallel Stream(并行流)240
6.10本章小结242
6.11习题242
第7章I/O流244
7.1I/O流概述244
7.2字节流245
7.2.1字节流概述245
7.2.2字节流读写文件247
7.2.3文件的拷贝250
7.2.4字节流的缓冲区251
7.2.5字节缓冲流253
7.3字符流254
7.3.1字符流概述254
7.3.2字符流操作文件255
7.3.3转换流258
7.4File类259
7.4.1File类的常用方法260
7.4.2遍历目录下的文件262
7.4.3删除文件及目录265
7.5RandomAccessFile266
7.6对象序列化268
7.7NIO269
7.7.1NIO概述269
7.7.2Buffer(缓冲器)270
7.7.3Channel(通道)273
7.8NIO.2275
7.8.1Path接口275
7.8.2Files工具类276
7.9本章小结278
7.10习题278
第8章GUI(图形用户接口)280
8.1Swing概述280
8.2Swing顶级容器281
8.2.1JFrame281
8.2.2JDialog282
8.3布局管理器283
8.3.1BorderLayout284
8.3.2FlowLayout285
8.3.3GridLayout287
8.4事件处理288
8.4.1事件处理机制288
8.4.2Swing常用事件处理290
8.5Swing常用组件295
8.5.1面板组件295
8.5.2文本组件298
8.5.3标签组件301
8.5.4按钮组件302
8.5.5下拉框组件306
8.5.6菜单组件308
8.6Swing组件的整合使用——QQ登录312
8.6.1案例分析312
8.6.2案例实现313
8.7JavaFX图形用户界面工具321
8.7.1JavaFX概述321
8.7.2JavaFX开发环境配置322
8.7.3JavaFX基础入门323
8.7.4JavaFX可视化管理工具328
8.8本章小结332
8.9习题333
第9章JDBC335
9.1什么是JDBC335
9.2JDBC常用API336
9.2.1Driver接口336
9.2.2DriverManager类336
9.2.3Connection接口336
9.2.4Statement接口337
9.2.5PreparedStatement接口337
9.2.6ResultSet接口338
9.3JDBC编程339
9.3.1JDBC的编程步骤339
9.3.2实现第一个JDBC程序341
9.4案例——使用JDBC实现QQ登录344
9.5本章小结347
9.6习题347
第10章多线程350
10.1线程概述350
10.1.1进程350
10.1.2线程351
10.2线程的创建352
10.2.1Thread类实现多线程352
10.2.2Runnable接口实现多线程353
10.2.3Callable接口实现多线程355
10.2.4三种实现多线程方式的对比分析357
10.2.5后台线程360
10.3线程的生命周期及状态转换361
10.4线程的调度363
10.4.1线程的优先级363
10.4.2线程休眠364
10.4.3线程让步366
10.4.4线程插队367
10.5多线程同步369
10.5.1线程安全369
10.5.2同步代码块370
10.5.3同步方法372
10.5.4同步锁374
10.5.5死锁问题375
10.6多线程通信377
10.6.1问题引出377
10.6.2问题如何解决379
10.7线程池381
10.7.1Executor接口实现线程池管理381
10.7.2CompletableFuture类实现线程池管理383
10.8本章小结385
10.9习题385
第11章网络编程388
11.1网络编程基础388
11.1.1网络通信协议388
11.1.2IP地址和端口号389
11.1.3InetAddress390
11.1.4UDP与TCP协议391
11.2UDP通信392
11.2.1UDP通信简介392
11.2.2DatagramPacket393
11.2.3DatagramSocket394
11.2.4UDP网络程序395
11.2.5UDP案例——聊天程序397
11.3TCP通信402
11.3.1TCP通信简介402
11.3.2ServerSocket402
11.3.3Socket403
11.3.4简单的TCP网络程序404
11.3.5多线程的TCP网络程序406
11.3.6TCP案例——文件上传408
11.4本章小结411
11.5习题412


前言: 言江苏传智播客教育科技股份有限公司(简称“传智播客”)是一家致力于培养高素质软件开发人才的科技公司。“黑马程序员”是传智播客旗下的高端IT教育品牌。“黑马程序员”的学员多为大学毕业后,想从事IT行业,但各方面条件还不成熟的年轻人。“黑马程序员”的学员筛选制度非常严格,包括严格的技术测试、自学能力测试,还包括性格测试、压力测试、品德测试等,以百里挑一的残酷筛选制度确保学员质量,降低企业的用人风险。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研三个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,有针对性地出版了计算机系列教材60多种,制作教学视频数十套,发表各类技术文章数百篇。“黑马程序员”不仅斥资研发IT系列教材,还为高校师生提供以下配套学习资源与服务。为大学生提供的配套服务1. 请登录在线平台http://yx.boxuegu.com,免费获取海量学习资源,还有专业的老师在线为您答疑解惑。2. 针对高校学生在学习过程中存在的压力等问题,我们还面向大学生量身打造了IT技术女神——“播妞”,可提供教材配套源码和习题答案以及更多IT学习资源。同学们可以添加“播妞”微信号208695827和“播妞”QQ号3231342131,获取学习资源。“播妞”微信“播妞”QQ为教师提供的配套服务针对高校教学,“黑马程序员”为IT系列教材精心设计了“教案 授课资源 考试系统 题库 教学辅助案例”的系列教学资源。高校老师请登录在线平台http://yx.boxuegu.com或关注码大牛老师微信/QQ2011168841,获取配套资源,也可以扫描下方二维码,加入专为IT教师打造的师资服务平台——“教学好助手”,获取最新教师教学辅助资源的相关动态。传智人2018年5月Java基础入门(第2版)
前言
Java是当前流行的一种程序设计语言,因其安全性、平台无关性、性能优异等特点,自问世以来一直受到广大编程人员的喜爱。在当下的网络时代,Java技术应用十分广泛,从大型复杂的企业级开发到小型移动设备的开发,随处都可以看到Java活跃的身影。对于一个想从事Java程序开发的人员来说,学好Java基础尤为重要。为什么要学习本书\t作为一种技术入门的书籍,最重要也是最难的一件事就是要将一些非常复杂、难以理解的编程思想和问题简单化,让读者能够轻松理解并快速掌握。本书采用理论和案例相结合的编写方式,采用通俗易懂的语言和生动形象的比喻来讲解理论知识,并使用典型、翔实的案例来演示知识的运用,真正做到理论与实际相结合。同时在编写本书时,充分考虑到实际开发学习和开发需求,更加全面地选取Java基础知识点、版本,也更为细致地对重要知识点原理和案例进行演示分析。书中知识点由浅入深、由易到难,初学者能够在逐渐深入的学习过程中,体会到编写Java程序的乐趣。如何使用本书\t本书共分11章,接下来分别对各章进行简单的介绍,具体如下。 第1章主要介绍Java语言的特点、JDK的安装使用、Java运行机制以及Eclipse开发工具使用。通过本章的学习,学员需要掌握JDK的安装配置,熟悉Java开发工具的基本使用,动手实现属于自己的第一个Java程序。 第2章详细讲解Java语言的基本语法。不论任何一门语言,其基本语法都是最重要的内容。在学习基本语法时,一定要做到认真学习每一个知识点,切忌走马观花,将章节内容粗略地看一遍,这样达不到理想的学习效果。 第3、第4章详细讲解Java语言面向对象的知识,这两章的内容以编程思想为主,初学者需要花很大的精力来理解这两章的内容。可以这样讲,只有学明白了面向对象的编程思想,才算真正认识了Java这门语言。 第5~7章主要讲解Java的常用类、集合和I/O,这3章讲解的知识是今后Java开发中最常用的基础知识。读者在学习这3章内容时,应做到完全理解每个知识点,并认真完成每个案例的独自操作。 第8章详细讲解GUI(图形用户接口)中的Swing和JavaFX工具,其内容主要包括Swing组件类架构、布局管理器、事件处理机制、Swing常用组件以及JavaFX图形用户工具基本使用。通过本章的学习,读者能够熟悉GUI的思想和常用工具,同时能够完成一些基本、适用的图形界面。 第9章主要讲解JDBC的基础知识,以及如何在项目中使用JDBC实现对数据的增删改查等。通过本章的学习,读者可以了解什么是JDBC,熟悉JDBC的常用API,掌握JDBC操作数据库的步骤,还能学会如何将GUI项目与JDBC相结合进行开发。 第10章主要讲解线程的创建、线程的生命周期、线程的调度方式、多线程同步以及线程池知识。通过本章的学习,读者可以对多线程技术有较为深入的了解,并对多线程的创建、调度以及同步做到熟练掌握。 第11章主要讲解Java网络编程的相关知识,内容包括网络通信协议、DatagramSocket类、DatagramPacket类以及如何通过UDP的相关知识来实现聊天程序、TCP网络编程中相关的ServerSocket类、Socket类以及文件上传任务的实现。通过对本章的学习,读者能够了解网络编程相关的知识,并能够掌握UDP网络程序和TCP网络程序的编写。另外,如果读者在理解知识点的过程中遇到困难,建议不要纠结于某个知识点,可以先往后学习。通常来讲,看到后面对知识点的讲解或者其他小节的内容后,前面不懂的知识点一般就能理解了。如果读者在动手练习的过程中遇到问题,建议多思考,厘清思路,认真分析问题发生的原因,并在问题解决后多总结。致谢本书的编写和整理工作由传智播客完成,主要参与人员有吕春林、陈欢、石荣新、韩永蒙。全体参与人员在这近一年的编写过程中付出了很多辛勤的汗水,在此一并表示衷心的感谢。意见反馈尽管我们尽了最大的努力,但书中难免会有不妥之处,欢迎各界专家和读者朋友提出宝贵意见,我们将不胜感激。您在阅读本书时,如发现任何问题或有不认同之处可以通过电子邮件与我们取得联系。请发送电子邮件至itcast_book@vip.sina.com。\t传智播客·黑马程序员2018年5月于北京 前言Java基础入门(第2版)


书摘: 第3章面向对象(上)学习目标
 了解面向对象的三个特征
 掌握对象的创建和使用方式
 掌握类的封装方式
 掌握方法的使用方式
 掌握this和static关键字的使用 Java是一种面向对象的程序设计语言,了解面向对象的编程思想对于学习Java开发非常重要。在接下来的两章中,将为读者详细讲解如何使用面向对象的思想来实现Java程序的开发。
3.1面向对象概述
面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。
对于学习过其他编程语言的人员来说,可能会想到面向过程。面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候依次调用就可以了。面向对象则是把构成问题的事物按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。当然,一个应用程序会包含多个对象,通过多个对象的相互配合即可实现应用程序所需的功能,这样当应用程序功能发生变动时,只需要修改个别的对象就可以了,从而使代码更容易维护。
面向对象的特点可以概括为封装、继承和多态,接下来针对这三种特性进行简单介绍。
1. 封装
封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。例如,用户使用计算机,只需要使用手指敲键盘就可以了,无须知道计算机内部是如何工作的,即使用户可能碰巧知道计算机的工作原理,但在使用时,并不完全依赖计算机工作原理这些细节。
2. 继承
继承主要描述的就是类与类之间的关系,通过继承,可以在无须重新编写原有类的情况下,对原有类的功能进行扩展。例如,有一个汽车的类,该类中描述了汽车的普通属性和功能。而轿车的类中不仅应该包含汽车的属性和功能,还应该增加轿车特有的属性和功能,这时,可以让轿车类继承汽车类,在轿车类中单独添加轿车特有的属性和功能就可以了。继承不仅增强了代码的复用性,提高了开发效率,还为程序的维护补充提供了便利。
第3章面向对象(上)Java基础入门(第2版)3. 多态
多态指的是在一个类中定义的属性和功能被其他类继承后,当把子类对象直接赋值给父类引用变量时,相同引用类型的变量调用同一个方法所呈现出的多种不同行为特性。例如,当听到“Cut”这个单词时,理发师的行为表现是剪发,演员的行为表现是停止表演等。不同的对象,所表现的行为是不一样的。
面向对象的思想只凭上面的介绍是无法让初学者真正理解的,初学者只有通过大量的实践练习和思考,才能真正领悟面向对象思想。