前言
编程的本质是利用计算机为人们解决实际问题,这些问题可大可小,小的如加减乘除,大的如飞天登月,都离不开计算机指令的精确操作。但是计算机在诞生之初并不如此智能,相反它只会几种简单的指令,跟牙牙学语的婴儿差不多,那么计算机又是怎样精通十八般武艺的呢?虽然大家知道计算机程序由编程实现,但背后离不开两大基础学科的发展壮大,其中一个是数学,另一个是逻辑学。
数学是一切自然科学的基础,借助于数学已经发现的各种算法和定理,计算机才能通过四则运算实现各种科学计算,从而具备计算器的演算功能。而逻辑学提供了科学检验的方法,根据存在的某种事实,经过判断去推理结果,使得计算机能够完成状态机的因果判定。把计算器与状态机结合在一起,并利用编程技术进一步封装方法和结构,使之开展更复杂的业务操作,由此诞生了早期的软件程序,逐步发展成专业的软件开发领域。
依据编程规范的差异,程序开发又可划分为各类编程语言,从最早的机器语言,到稍后的汇编语言,再到以C语言为代表的中级语言,继之以C++、Java为代表的高级语言,每种语言顺应时代要求各领风骚若干年。Java便是其中一个长盛不衰的语言,不仅老而且新。说它老,是因为Java诞生于20世纪90年代,可谓来自20世纪的老古董;说它新,是因为它每半年就发布一个新版本,迭代之快令人目不暇接。早在Java问世之时,它就提供了面向对象、跨平台运行等强大特性;自Java 8开始,它又增加了函数式编程、流式处理等先进理念,一直站在编程领域的发展前沿。
原本Java语言的设计者打算让它涉猎三个开发方向,分别是:用于服务器的JavaEE、用于桌面程序的JavaSE、用于移动终端的JavaME。经过二十余年的大浪淘沙,Java编程在企业服务器开发方向始终屹立不倒,它在国内的市场份额远超另外两个Web开发框架——PHP和.NET。此外,Java作为安卓系统的主要开发语言,它在移动互联网时代更是大放异彩。一个拥有Java编程技能的求职者,既可投递Web开发岗位,又能应聘App开发职位,就业渠道无疑拓宽了许多。
因此,在未来的相当长时期之内,Java编程都将是软件开发的主力军,而非像一些语言那样昙花一现。尽管时代热点此起彼伏,各路豪强语言轮番登台,但多数语言缺乏庞大的产业基础,众人一窝蜂追逐的结果,必然导致学成之日即是失业之时。唯有Java历经数十年的风风雨雨,至今仍保有国内第一大编程语言的宝座。况且Java拥有这些年沉淀下来的众多框架组件,早已筑造一条难以逾越的护城河,加之各行各业推行“互联网+”的革新,长远来看,这场数字变革将持续开展,带动Java人才的需求居高不下。
本书是一本Java入门教程,可以帮助读者迅速上手Java基础编程。作为一本编程图书,本书将详细讲解Java语言的语法构成和编程技巧,但并不局限于传统的Java编码说明,而是以软件工程的视角铺叙编程知识,从基本的数学公式到专门的求解算法,从多样的数据结构到常见的设计模式,这些知识不仅适用于Java语言,也适用于其他编程语言。如此写作的目的是,力图让读者掌握通用的编程技能,而非仅仅学会某个语言的编码,以后读者若去学习其他编程语言,只要具备通用的编程技能,即可借此触类旁通、事半功倍。
全书共17章内容,可分为4大部分,其中第1~6章介绍Java的常见数据类型及开发,包括基本变量类型、数组类型、包装变量类型、字符串类型以及日期时间类型;第7~11章介绍面向对象的开发过程,包括面向对象的三要素(封装、继承、多态)、面向对象的扩展(嵌套、枚举、抽象、接口)、面向对象的应用(容器、泛型、文件IO)、面向对象的特殊处理(异常、反射、注解)以及基于面向对象的函数式编程;第12~14章介绍Java语言的界面编程,包括AWT、Swing、JavaFX三大图形框架的编码运用;第15~17章介绍Java编程的高级开发,包括多线程、网络通信和数据库操作,各章末尾着重描述打地鼠游戏、即时通信工具、诗歌管理系统三大实战项目的软件设计及编码实现。
所谓零基础指的是Java零基础,不是数学零基础,读者在学习本书之前,应当至少掌握初中数学知识,像方程式、坐标系、勾股定理、三角函数这些概念均需了解。所以,只要是正常接受九年义务教育的读者,均已具备学习本书的条件,并非只有计算机相关专业才可学习Java编程。
本书所有代码都基于Java 11编写,且在IDEA上面编译和调试通过,读者在阅读本书时,若对书中的内容有疑问,可在笔者的博客(https://blog.csdn.net/aqi00)上留言,或者关注笔者的微信公众号“老欧说安卓”,更快、更方便地阅读技术干货。至于本书的最新源码,可访问笔者的GitHub主页获取,GitHub地址是https://github.com/aqi00/java。读者也可以扫描以下二维码获取本书的源码、38节Java入门教学视频和PPT教学课件:
如果在下载过程中出现问题,请发送邮件至:booksoge@126.com获得帮助,邮件标题为“好好学Java:从零基础到项目实战”。
最后,感谢王金柱编辑的热情指点,感谢出版社同仁的辛勤工作,感谢我的家人一年多来的默默支持,感谢各位师长的谆谆教导,没有他们的鼎力相助,本书就无法顺利完成。
欧阳燊
2020年1月