
前言
记得早在2017年,在我跟人民邮电出版社的傅道坤编辑合作完《Tomcat内核设计剖析》这本书后,他就邀请我写一本面向Java初学者的图书,书的定位是专门为无Java基础的人提供入门指导。当时我谢绝了邀请,一来我当时已经把大部分精力投入人工智能相关的学习和研究上,二来我一直觉得市面上Java入门书已经很多了,我不觉得在时间和精力都比较受限的情况下能写得比那几本经典的图书好,况且写入门级的教程对我自己而言没有什么太大的意义。其间我又陆续跟傅编辑合作出版了另外两本书,还有一本人工智能科普书也快完稿了。转眼到2021年,此时傅编辑又问我要不要考虑写一本面向Java初学者的书,这一次我欣然地接受了这个任务。回望这些年,我写的书都是面向中高级开发人员的,冥冥之中觉得现在是时候写一本入门书了。
Java从1995年正式发布第一个版本开始到现在已有近30年,经过几十年的发展,它已经成为互联网时代主要的开发语言之一。如今整个Java生态已经相当繁荣,开发者数量也达到千万级,可见其在开发领域的受欢迎程度。近些年Java始终保持着快速的发展趋势,整个Java社区非常活跃且大版本的发布保持着很高的频率。虽然Java不断受到其他编程语言的挑战,但仍然一直在编程语言排行榜中位居前三名,这也足以证明它的生命力之顽强。
最早Java诞生的本意是用于智能电器,然而没有在该领域取得太大的成功。后来由于互联网兴起,Java凭借跨平台和面向网络的特性突然火了起来,当然这其中有一个非常重要的原因就是代码开源。Java最初的设计理念是“编写一次,到处运行”(Write Once, Run Anywhere),也就是说不管是什么硬件、什么操作系统,只要安装了Java运行环境就可以运行已经编译好的Java程序,而且不必针对硬件和操作系统重新进行编译。如今Java主要应用于移动端和服务器端的开发,移动端主要是安卓,而服务器端则是企业的业务系统、中间件和大数据组件等。从应用范围和发展趋势来看,开发者学会使用Java是非常有必要的。
本书具备如下特点。
● 本书鼓励你一定要动手,跟着书中代码一个个字母敲起来!
● 本书的定位是对Java基本语法的讲解,始终从初学者的角度,用通俗易懂的语言和形象生动的例子来讲解Java基础知识。
● 本书秉承“talk is cheap, show me the code”的极客精神,全书给出了数百个代码示例,对于每个细小的知识点都提供相应的代码。
● 本书非常适合自学,每节都有“考考你”和“动手做一做”两项任务,只要读者积极思考并动手完成任务便能快速掌握相关知识点。
组织结构
全书共分为12章,具体如下。
● 第1章,走进Java世界:介绍了Java语言的基本情况、Java的发展史、如何选择Java版本以及Java语言的特性,同时讲解了JVM、JRE和JDK三个容易混淆的概念之间的关系,还介绍了Java的执行机制,最后介绍了Java的应用领域。
● 第2章,开发环境:介绍了如何在Windows、Linux和macOS三种操作系统中安装Java,然后通过第一个Java程序让我们第一次接触Java代码,接着介绍如何安装IDEA编程开发环境,最后介绍了JShell工具的使用。
● 第3章,基础知识:介绍了Java语言的基础知识,包括注释、标识符、关键字、变量、常量、数据类型、整数类型、浮点类型、字符类型、布尔类型、隐式类型转换以及显式类型转换。
● 第4章,运算符:讲解了Java八大类运算符,包括算术运算符、关系运算符、自增自减运算符、逻辑运算符、位逻辑运算符、移位运算符、赋值运算符及其他运算符,同时也分析了运算符的优先级。
● 第5章,表达式与语句:介绍了Java的表达式、语句、语句块以及程序的执行顺序,然后详细介绍了if条件分支语句、switch条件分支语句、for循环语句、while循环语句、do-while循环语句和return语句。
● 第 6 章,类与对象(上):介绍了 Java 这门面向对象编程的类与对象这两部分核心内容,讲解了面向对象编程、Java类的组成、如何通过类来创建对象、Java的包、类的封装性、static关键字、null关键字、无名称对象、对象的克隆以及对象的序列化和反序列化等。
● 第7章,类与对象(下):讲解了类的继承、super关键字、final关键字、重写方法、重载方法、多态性、instanceof关键字、抽象类、接口、枚举以及内部类等。
● 第8章,数组与集合:首先介绍了数组概念,从一维数组到二维数组,再到三维及更高维的数组,Java的数组类以及如何进行数组复制操作,然后介绍了Java的集合,包括列表类、集合类、映射类、队列类、堆栈类以及集合工具类。
● 第9章,Java常用工具类:介绍了Java常用的类,包括字符串类、运行环境类、系统类、基本数据类型包装类、数学类、随机数类、扫描类、日期类以及正则表达式。
● 第10章,异常、注解与泛型:首先介绍了Java语言的异常处理机制,包括try-catch组合、try-multi-catch组合、try-catch-finally组合、throw关键字以及throws关键字,然后介绍了@Override、@Deprecated和@SuppressWarnings三个注解。最后介绍了Java的泛型,包括泛型方法、泛型类型和泛型接口。
● 第11章,文件与I/O:讲解了Java中的文件和I/O操作,文件方面包括File文件类实现文件和目录的创建、删除、重命名,获取文件属性以及遍历文件目录等,I/O方面包括输入输出类、文件和对象输入输出以及文件读写器。
● 第12章,多线程与网络编程:首先介绍了Java语言多线程编程,包括进程、线程、多线程机制、线程生命周期、线程的创建、线程的优先级、守护线程、线程的休眠以及synchronized关键字,然后介绍了网络编程基础知识,包括各种网络协议、套接字、通信编程以及广播通信等。
目标读者
● 想快速入门Java编程的人士。
● 想自学Java编程的人士。
● 初级和中级程序开发人员。
● 在校学生或正在参加Java培训的人士。
● 想巩固Java基础的人士。
意见反馈
在交稿时,我仍在担心本书是否遗漏了某些知识点,内容是否翔实齐备,是否能让读者有更多收获,是否会因自己理解上的偏差而误导读者。由于写作水平和写作时间所限,本书中难免存在错漏,恳请读者指正。
读者可将意见及建议发送到邮箱wyzz8888@foxmail.com,本书相关的勘误也会发布到我的个人博客blog.csdn.net/wangyangzhizhou上。欢迎读者通过邮件或博客与我交流。