Java面向对象思想与程序设计(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-01 04:28:54

点击下载

作者:刘彦君 张仁伟 满志强

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Java面向对象思想与程序设计

Java面向对象思想与程序设计试读:

前言

从酝酿到成书,本书作者始终坚持一个原则:帮助Java学习者从入门走向精通。这是个很高的目标,非常具有挑战性。为了实现这个目标,本书作者在书中融入了大量自己的思考和实践结果。

内容体系

在总体逻辑上,本书分为四个模块:入门知识、面向对象技术、类库资源、应用编程。内容遵循知识的由浅入深和从局部到整体的逻辑。各部分章节划分及具体内容如下。

模块一 入门知识(第1章~第2章)。包括了解Java语言、了解Java程序结构、Java语言语法知识细节、Java编程和运行环境。这个模块的学习,以入门为目的。检验是否入门的标准有两个,一是看对语法的掌握是否全面准确,二是看是否能够编写出简单程序。

模块二 面向对象技术(第3章~第6章)。详细介绍面向对象的概念、原理、机制和语法等细节内容。第3章是面向对象技术的导论式介绍,从实际问题出发,面向具体应用,引导读者以一种自然的方式去理解面向对象技术和应用。第4章和第5章从语法层面详细地展开,通过大量实例演示说明面向对象程序设计的方法。

模块三 类库资源(第7章~第13章)。和其他面向对象的语言一样,Java的类库是编程所需的软件资源。类库中大量的类分属于不同的类包。就像工具包中有不同的工具一样。这是典型的面向对象的方式,给它自身赋予了可扩展性。每个新的JDK版本发布时,要么增加了新的类包,要么在原来的类包中增加了新的类。

模块三中的各章内容互不相同、自成体系,但是都服务于一个中心问题——面向对象的应用编程和软件开发。每章分别体现一个应用方向或者一种技术,都以类库中的不同类为线索展开,各章类不同、功能不同、应用场景不同。

模块四 应用编程(第14章)。在前面章节中举例的程序基础上,本章给出几个应用程序问题,目的是综合运用各章知识,解决典型的设计问题,实现从学习Java语言向掌握Java技术的过渡。

本书特点

本书面向以Java为第一种程序语言的初学者。因此,作者特别重视引导读者入门。围绕这个目标,本书在内容组织、结构安排、教学形式方面都有一些独特的设计。

1.强化面向对象

本书突出面向对象技术的原理和应用这个重点。面向对象技术的概念、原理、机制复杂而抽象,难以理解。为了使初学者能够突破这个难点,本书采用了以下两种方法:一是加大面向对象技术的内容篇幅;二是用类比和对比的方式介绍面向对象技术的内容。加大面向对象技术内容篇幅,使得内容讲解可以由浅入深地展开,同时用更多的程序去验证和说明问题。用形象的例子对比面向对象技术和面向过程技术,有利于读者对抽象术语、概念建立直观的认识,有利于读者接受并理解面向对象技术复杂的原理机制。

2. 优化结构设计

首先,本书将语言基础知识合并为一章,这样的设计,有利于引导读者快速进入编程情境,在编程中快速而准确地学习语法知识,学以致用,体现“做中学”的思想。其次,每章章首设置的思维导图中,有入门问题、重要术语、主要内容、重点难点四项:“入门问题”明确地引导读者按照“问题驱动”的方式去学习;“重要术语”可使读者快速了解本章基础知识,排除障碍;“主要内容”起着路线图的作用,有利于读者对所学内容建立总体概念,对不同知识点之间的逻辑关系建立清晰的认知;“重点难点”体现了本章突出的重、难点内容,一定要认真把握。初学者一开始可能提不出问题,那么可以带着思维导图中提出的问题去学习,这样便于快速掌握内容主体,使学习有针对性,不至于像走入迷宫一样失去方向。

3.支持在线学习

为了帮助到选用本书的读者更快地掌握知识,我们用心录制了微视频,针对一些重要知识点、案例进行讲解,读者可以扫描书中二维码在线查看。同时为方便教师教学,本书还提供书中所有案例的源代码、教学大纲、PPT,配套资源下载连接:box.ptpress.com.cn/y/49179。

学习方法

丹尼尔·科伊尔在《一万小时天才理论》这本书中有一个核心的观点:在通往成功的道路上,重复练习无法替代且是千金难求的方法。事实上一个人在任何一个领域要想出众,都要通过至少一万小时的练习才可能实现,并且,不是在你的舒适区练习,而是在容易犯错的地方进行精深练习。

安德斯·艾利克森博士在《刻意练习:如何从新手到大师》一书中对“刻意练习”做了这样的阐释:只在学习区练习、大量重复训练、持续获得有效的反馈、精神高度集中。

结合以上观点,作者建议读者从以下3方面进行“刻意练习”。

1.模仿并重复训练

为了实现入门,可以先模仿并重复练习(可借鉴外语教学的完型填空法)。学习编程时,尤其是在最初阶段,常常会苦于没有解题思路,一筹莫展,浪费许多时间,这样苦思冥想不是学习的好方法。而完型填空法的思路是,在难度可控的范围内展开模仿学习:借助模具,遮盖程序中的一行代码、一个方法或一个类。这样经过若干次重复,可以对问题求解策略有一个从整体到局部,再从局部到整体的认知。

2.科学规划和严格执行

练习时,要注意科学地规划练习内容,并严格地执行计划;应避免低水平简单重复,要走出舒适区。如何做到这一点呢?有两个方法:一是重复同一问题的求解,主动尝试用不同的技术路线、不同的算法、不同的设计思路、不同的语言来解决问题;二是将同一种语言用在不同的课程中,以其他专业课程中包含的计算问题为项目,进行分析求解,这既有助于计算思维形成,也有助于该课程的学习。

3.建立有效的反馈机制

反馈,就是从自己和他人的成功及失败中积累经验,在评价中持续改进自己的设计。有效的反馈是正确练习的保证,可以通过团体学习、集体讨论来实现反馈。近年流行的敏捷开发、结对编程,都体现了团队和讨论在学习和开发中的作用。同一个难度的问题,在新手和老手眼里可能天差地别,所谓难者不会,会者不难,希望大家能虚心接受他人的意见,早日掌握Java。

致谢

本书由哈尔滨理工大学三位老师共同编写,其中,刘彦君编写了第1、3、7、10、12、14章,并负责全书统稿工作;张仁伟编写第6、8、9、11、13章;满志强编写第2、4、5章,并完成了全部教学视频录制任务。本书的编写还离不开学生们的热情参与,特别是赵敏捷同学和赵宁同学,他们结合自己的学习经历,提出了多条入门阶段的感悟,拓宽了笔者的思路。在此对他们表示衷心的感谢。作者2018年5月第1章Java概述1.1 Java语言简介

Java语言受到广大程序员的欢迎有多方面的原因。首先源于它是面向对象的语言,而面向对象的语言是目前的主流语言。其次,在众多面向对象语言中,Java语言自身的许多特点使其脱颖而出。最后,必须指出的是互联网在全球范围的普及应用为Java语言提供了一个非常大的舞台,使其获得很大的成功。1.1.1 Java语言的产生

在介绍Java语言之前,我们先说说程序,然后再说说程序设计语言(简称语言)。

用过计算机的人都知道,使用计算机可以做很多事情:上网、玩游戏、收发电子邮件、播放音乐、下载文件资料等,简直数不胜数。但你想过没有,这些事情是如何完成的?谁来替你做的?答案是:程序!是人们预先编写的程序,存储在计算机里,等着你来调用它。你对计算机发号施令,计算机里预先存储的程序接受你的命令,为你做事。

图1-1展示的是几个常见的应用。你计算机上的应用图标数量远不止于此吧!图1-1 几个常见应用

浏览器程序帮助你在网上冲浪,游戏程序让你陶醉其中,邮件收发程序为你和朋友架起互通信息的桥梁……总之,你依赖程序在计算机上做事。

那么程序怎么写呢?很显然,你需要学习程序设计语言。就像你要写作文,你首先得学会一门语言,比如汉语、英语或俄语。

Java就是这样一门程序设计语言,而且是一门目前很受欢迎的获得广泛应用的程序设计语言。

1991年,为了研究计算机在家电产品中的嵌入式应用,Sun公司的James Gosling等人组成名为Green的项目组。他们于1992年设计出Oak语言。由于当时缺乏硬件支持,Oak没有市场化。

1995年,由于互联网的蓬勃发展,人们迫切需要一种适用于网络编程的、小型的、跨平台的语言,Oak因此重获生机。它以Java为名正式面世。此后,Java深受程序员和用户欢迎,至今仍是开发各种基于Web应用程序的首选语言。据TIOBE2018年1月的调查数据可知, Java市场占有率高达14.215%,长期独占鳌头。Java的成绩,得益于其固有的优点,尤其是2014年推出的最新版Java8引入了函数式编程的新特性,使其进一步扩大了其在程序设计语言领域的领先优势。图1-2所示为2018年1月Java所占市场份额和排序。1.1.2 Java语言的版本变迁

Java语言有3个主版本:标准版(Java Standard Edition)、企业版(Java Enterprise Edition)、微型版(Java Micro Edition)。其可以分别简称为Java SE、Java EE、Java ME。其中Java SE是核心语言,Java EE用于企业应用开发,而Java ME用于移动设备的应用开发。

我们提到Java一般有两种含义:一是指Java语言,就是Java SE;二是指Java技术,就是以Java SE为核心语言进行扩展的所有相关开发技术的综合。这样的综合体有哪些内容,我们会在1.4节展开说明。图1-2 Java市场份额(2018年1月)

本书讲解的Java SE,就是Java语言,书中将介绍它的语法细节和应用编程方法。

Java SE的版本标识从最初的JDK1.0到目前最新的JDK1.8,技术不断更新,不断进步,使得Java语言能永葆活力。注意:这里的JDK(Java Development Kit)是Java开发工具的意思。

Java随着版本升级,有许多次名称的改变。例如,从JDK1.5之后,按照主版本号来命名,即JDK5,因此,目前的JDK8是指JDK1.8。也有人喜欢说Java SDK8,这是Java Software Development Kit1.8的简称。SDK除了可以包含JDK,还包含辅助开发的文档、范例和工具集等,所以JDK是Java SDK的子集。

另外,历史上曾经有过,直到今天仍不乏有人在用的J2SE/J2EE/J2ME,其实是由于JDK1.2版很优秀,为了区分Java 2平台和之前的JDK而进行的命名。在2005年6月推出JDK1.6时,J2SE/J2EE/J2ME统一改称为Java SE/Java EE/Java ME了。

拓展知识TIOBE语言排行榜TIOBE表示热忱和认真,同时也是Oscar Wilde(奥斯卡·王尔德)在19世纪末写的一部喜剧的名字。使用TIOBE作为社区的名称,也表示了社区的创立者对软件客户、软件供应商和同行的重视以及诚挚的专业态度。TIOBE每天为世界范围的客户实时检查超过9亿3400万行软件代码。TIOBE开发语言排行榜每月更新一次,依据的指数由世界范围内的资深软件工程师和第三方供应商提供,排行结果可反映当前业内程序开发语言的流行和使用程度。开发者可根据排行榜检查自己的编程技能能否跟上趋势,是否有必要作出战略改变,以及是否要学习新的编程语言。建议读者关注这个排行榜,既可以对比语言功能及特色,使开发语言的选择更有见地,同时也可了解软件人才市场的需求。1.1.3 Java语言特点

Java语言具有许多独特之处,它既区别于传统的面向过程语言,也不同于其他的面向对象语言。读者刚开始接触 Java时,对这些特点可能很难有深入的理解,但是,随着学习的深入,理解会不断加深。1.简单易学

Java语言的语法与C/C++有很多相似的地方,例如数据类型、运算符、表达式和语句。对比一下关键字列表就可以发现这种相似性。有C基础的读者,可以将C与Java的语法做详细对比,找出相同、相似和不同点,通过对比法来提高学习效率,同时也有利于快速辨析清楚两种语言的语法规则和用法的许多细微区别,这就是格物致知的道理。2.解释式

高级语言的工作方式有两种:编译式和解释式。

编译式语言如C、C++、Pascal等,它们对源程序先进行编译,生成可执行文件(.exe)。可执行文件可直接由操作系统(Operating System)来执行。在使用集成开发环境IDE (Integrated Developing Environment)时,可以从IDE的菜单查看编译命令,或者到项目工作目录下查看,了解exe文件的生成方式。

Java语言的工作方式如图1-3(c)所示,它不同于图1-3(a)和图1-3(b)。图1-3(a)是编译式语言工作过程,(b)是解释式语言工作过程,Java语言的工作方式介于编译式和解释式中间,是一种混合形式,有人把它称为伪编译(pseudo compile),但它本质上还是解释式语言。因为它虽然生成了中间代码,即字节码文件(.class),但这个文件并不能像.exe文件那样可由操作系统直接执行,而是用Java虚拟机(Java Virtual Machine, JVM)解释执行。图1-3 高级语言的工作方式3.安全性

Java语言通过若干安全机制来确保其安全性。这些机制包括通过关键字控制代码可见性、不支持指针类型、访问控制的沙箱(sandbox)机制和数字签名机制、安全策略机制、字节代码校验机制、安全代码发布、异常处理机制等。4.面向对象

Java语言是一种面向对象的程序设计语言。面向对象思想使人们分析问题和解决问题时,更接近人类固有的思维模式,更自然顺畅了。用面向对象程序语言(OOPL)编程,也更安全高效了。5.平台无关

Java源文件经编译生成与计算机指令无关的字节代码,这些字节代码不依赖于任何硬件平台和操作系统。当Java程序运行时,需要由一个解释程序对生成的字节代码进行解释执行。这体现了Java语言的平台无关性,使得Java程序可以在任何平台上运行,如MS-DOS、Windows、Unix等,因此具有很强的可移植性。这就实现了Java“编写一次,到处运行”(write once,run anywhere)的目标。6.多线程

Java语言支持多线程,多线程机制使得一个Java程序能够同时处理多项任务。类似操作系统支持多进程并发执行的情况,多进程使计算机能够同时执行多个任务,例如游戏的动感画面与美妙音乐同在、从网上下载文件和执行本地用户程序并行不悖等,大家都有切身感受。线程可以看作是更小的进程。Java提供了实现多线程程序的类和接口,使用它们,可以编写实现并发执行的多线程程序。7.动态性

C语言的基本程序模块是函数。程序执行过程中所调用的函数,其代码已静态地加载到内存中。Java的类是程序构成的模块,Java程序执行时所需要调用的类是在运行时动态地加载到内存中的,这使得Java程序运行所需的内存开销小。这也是它可以被用于许多嵌入式系统和部署在许多微小型智能设备上的原因。Java还可以利用反射机制动态地维护程序和类,而C/C++不经代码修改和重新编译就无法做到这一点。

此外,Java语言还具有网络适用性、可移植性、类库丰富、高性能等特点。1.2 初识Java程序

Java可以编写独立执行的应用程序(application)或者嵌入到网页中执行的小程序(application let, 即applet),本节将对这两种程序进行比较,并以实例说明它们各自的结构特点。1.2.1 Java程序的两种类型

Java应用程序和Java小程序之间主要有3点区别。(1)程序编写目的不同。Java和其他高级语言一样,可以解决各种数据处理、科学计算、图形图像处理类问题,这就是编写应用程序的目的。applet具有特殊性,它用在网页中,给静态的HTML网页带来动态和交互功能,比如不同网页元素间的数据计算。(2)程序结构不同。关于两种程序结构的细节随后分两个视角展开介绍。(3)程序执行方法不同。应用程序经javac编译成字节码文件后,用Java启动Java虚拟机进行解释执行。小程序编译后,需嵌入到一个网页文件中,然后使用浏览器或者Java提供的小程序浏览器appletviewer,通过执行HTML文件,小程序被执行。1.2.2 Java程序的结构特点

通过两个程序例子可以说明应用程序和小程序的结构特点。【例1.1】写一应用程序,显示字符串“Welcome to learn Java!”例1.1讲解【代码】/**the first program in the textbook*Author Liu*/public class Example1_01//主类{public static void main String[] args//main方法,程序的入口{System.out.println("Welcome to learn Java!");}}【例1.2】写一小程序,显示字符串“Welcome to learn Java!”例1.2讲解【代码】import java.awt.*;import java.applet.*;public class Example1_02extends Applet//applet必须以Applet为父类{String s1;public void init()//重写Applet类的方法{s1 = new String(“Welcome to learn Java!”);}public void paint(Graphics g)//重写Applet类的方法{g.draw String(s1,5,20);}}

从类外部看Java应用程序和小程序的异同点如下。(1)程序以类(class)为组成单位,一个程序中可能包含一个或多个类。(2)类可自己定义Example1_01、Example1_02,亦可用系统提供的System、Applet、String、Graphics。(3)class前面加public修饰的类称为公共类。当程序中有多个类的时候,如果有公共类,只能有一个,而且必须以此类命名程序并保存,例如Example1_01.java。(4)包含主方法main()的类是主类,是应用程序的入口,是程序执行的起点。(5)类名称如用英文单词,一般首字母大写,这不是必须,是编码规范的要求。(6)类前面的import表示导入,为本程序导入所需要的类,例如import java.applet.*是为了导入类Applet,这里“*”是通配符,意思是所有的类,包括了Applet。(7)小程序的特点是用extends指出父类Applet。小程序Example1_02从类Applet中继承数据。

从类内部看Java应用程序和小程序的异同点如下。(1)类中包含数据和方法,例1.1中的main()和例1.2中的String s1、init()、paint()。Java中的方法(method),等同于其他语言中的函数(function)、过程(procedure)或子程序(subroutine)等。一个方法是一个执行单元,只能实现一个功能。(2)方法定义也可在方法类型前加修饰符,如public。(3)方法中包含语句序列,语句以分号结尾。(4)应用程序中有主方法main(),小程序中不必有main(),小程序执行完初始化方法init()后执行输出方法paint()。(5)应用程序中用System.out.println()输出数据;小程序中用g.draw String()输出数据。1.3 Java开发与运行环境

在上节中我们看到了两个程序,虽然很短小,但结构却是完整的。本节中我们将利用这两个程序来初步了解程序是怎样编辑、编译、运行的,了解Java的开发运行环境,以及Java开发工具包的安装和环境变量的设置。JDK的安装与配置1.3.1 使用JDK

JDK是Java开发的基本工具集,也是各种开发和运行环境构建的核心。1.下载安装Java开发工具包

登录Oracle官网http://www.oracle.com/,下载jdk-8u111-windows-x64.exe到本地硬盘,双击安装程序,在安装过程中需指定安装路径,在之后的环境变量设置时会用到该路径。2.配置环境变量

所谓环境变量(Environment Variables),一般是指在操作系统中用来指定程序运行环境的一些参数。JDK涉及的环境变量主要有3个:JAVA_HOME、PATH、CLASSPATH。其中, JAVA_HOME表示JDK的安装目录,它的作用是使其他软件如TOMCAT、Eclipse等引用JAVA_HOME可以查找到JDK。PATH表示路径,它的作用是指定命令搜索路径,在命令行执行命令(如java或者javac,即搜索java.exe和javac.exe)时PATH负责提供关于这些命令存储位置的搜索路径。变量CLASSPATH的作用是提供类搜索路径。

下面以Windows7为例说明JDK1.8环境变量的设置方法。(1)在桌面上将鼠标移至“计算机”图标上并单击右键,选择“属性→高级系统设置→环境变量”;(2)在系统变量列表的下面单击“新建”按钮,在如图1-4所示的对话框中输入变量名和变量值;图1-4 设置环境变量JAVA_HOME(3)在系统变量列表中找到“Path”并双击,在“编辑系统变量”对话框中“变量值”处将光标移到最后,并添加“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”;在系统变量列表的下面单击“新建”按钮,在图1-4所示的对话框的“变量名”处输入“CLASSPATH”,在变量值处输入:“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt. jar,%JAVA_HOME%\lib\tools.jar。”\lib\dt.jar,%JAVA_HOME%\lib\tools.jar。”

在变量值序列中,“.”表示当前路径,“;”分隔不同路径,%JAVA_HOME%表示相对路径,也可以使用绝对路径进行相关配置。3.JDK组成

JDK是Java开发工具包,它包含开发程序所需要的工具,如编译、运行、调试等。要使用这个工具,需要首先了解它的组成。JDK各个版本的目录结构相同,但具体内容随版本而异。(1)开发工具。在JDK的bin子目录中包含了典型的开发工具,如编译器javac.exe、解释器java.exe、小程序浏览器appletviewer.exe、调试工具jdb.exe、建立文档工具javadoc.exe等。(2)运行环境。Java运行环境即JRE(Java Runtime Environment),在JDK的jre子目录中提供了执行Java程序运行的软件环境,其中包含了Java虚拟机、Java基础类库和支持文件等。和JDK不同,JRE不包含编译器、调试器等工具,但是它包含了程序运行必需的组件。

JRE一般不需要单独下载安装,它随JDK的下载安装同时完成自身的安装。在jre子目录下的bin目录中存放着的就是程序运行必要的组件。JDK和JRE各司其职,只不过安装时把它们放在了一起。(3)源代码。在JDK根目录的src.zip文件中,包含着Java核心API(Application Programming Interface,应用程序接口)和所有类的源代码,即java.*、javax.*和部分org.*包中的源文件。浏览一下源代码可以了解Java类库结构和类的具体内容,这是学习和掌握Java的一条便捷之路,因为从类文档和教科书中读者能够看到的只是关于类的属性和方法的概要描述,如果想详细了解某个方法的定义,可以研究其源代码。(4)附加类库。在lib子目录中提供了开发所需的其他类库和支持文件。(5)样本代码。在examples子目录中提供了某些API和SPI(System Programming Interface)的例子程序,例如List.java。4.程序的编辑、编译和运行程序的编辑编译和运行

有了JDK,我们以Example1_01.java和Example1_02.java为例,说明Java应用程序和小程序是如何编辑、编译和运行的。(1)编辑:JDK中没有提供编辑器,可以使用Windows提供的记事本程序编辑例1.1的程序。打开记事本程序并输入例1.1的程序,然后选择菜单“文件→另存为”,在“另存为”对话框中选择存放程序的文件夹、文件名和文件类型,如图1-5所示。文件名必须与public类的名字相同(包括大小写),再加后缀“.java”;文件类型必须选择“所有文件”,否则保存程序时会在文件名后加一个多余的后缀“.txt”。(2)编译:程序编辑完成后,打开一个命令窗口,在命令窗口中转换路径、编译并运行程序,如图1-6所示。图1-5 程序编辑和保存图1-6 程序的编译和执行(3)运行:编译如果没有遇到语法错误,则会生成字节码文件Example1_01.class,编译器顺利完成编译后,悄然返回DOS提示符下,即图1-6中D:\ch1>,这种低调的风格可能用户未必都喜欢。但是不管怎么说,第2步完成了!下一步就可用Java启动JVM执行程序,得到执行结果。如图1-6所示。万一出现了语法错误,初学者可能感到沮丧,其实大可不必,从错误中学习也许进步更快呢!语法错误牵涉具体的语法规则,这里不能细说,仅举一个丢标点符号的简单例子说明一下,参见图1-7。(此处,为了故意制造一个错误,请在记事本中再次打开程序文件Example1_01.java,删掉语句末尾的“;”,重新保存文件,再编译,就出现了图1-7所示的语法错误,看来编译器检查到了这一错误,并且给出错误提示信息。它在尽职尽责地工作!)图1-7 编译过程语法错误提示

小程序的操作,前2步与应用程序的一致。第3步,就是执行方法有所不同。

需要在记事本中建立一个HTML文件,并保存。然后,用appletviewer执行。在HTML文件中嵌入第2步编译生成的字节码文件Example1_02.class。

HTML文件命名为mypage.html。My First Java AppletHere's my first Java Applet:

打开一个命令窗口,在命令窗口中输入命令“appletviewermypage.html”,程序运行结果如图1-8所示。HTML文件当然可以采用浏览器执行。图1-8 小程序执行结果1.3.2 使用IDE

使用记事本编辑程序有诸多不便,最大的不便是记事本没有自动语法检查和报错功能,以及项目管理功能。而集成开发环境可以使开发、调试、运行更方便。本节将介绍Eclipse的使用方法。Eclipse简介Eclipse基本操作1.Eclipse简介

Eclipse是开源项目,读者可以到 www.eclipse.org网页免费下载Eclipse的最新版本。下载时有两个选择:Eclipse IDE for Java EE Developers和Eclipse IDE for Java Developers,建议读者选择前者,因为它包含了后者的功能,且为后续课学习或当下拓展学习提供了方便。

Eclipse本身是用Java语言编写的开发工具,但下载的压缩包中并不包含Java运行环境,需要用户自己另行安装JRE,并且要在操作系统的环境变量中指明JRE中bin的路径。安装Eclipse时只需将下载的压缩包直接解压即可。

下载的压缩包解压之后,双击运行eclipse.exe,会看到软件界面如图1-9所示。图1-9 Eclipse主界面2.Eclipse基本操作

Eclipse是一个集成开发环境,它包括创建项目、编写、编译、运行和调试等基本操作和一些辅助操作。(1)建立Java项目。选择菜单“File→New→Java Project”,命名项目,确认完成(finish)即可。(2)创建包。选中项目中的src目录,单击鼠标右键“ New→Package”,命名后确认即可。(3)创建类、添加属性和方法。在包名上单击鼠标右键,选择“New→Class”,输入类名并按“finish”键即可创建类,同时进入该类的设计窗口,为类添加属性和方法,如图1-10所示。图1-10 类设计窗口3.Eclipse调试程序的方法

程序中的错误包括语法错误、运行时错误和算法逻辑错误。编译时可以找出语法错误,运行时可以发现算法和逻辑错误。在程序编译通过后,如果不能获得预期的执行结果,说明程序中潜藏着错误,即所谓的bug。调试程序就是找出bug,术语debug就是这个意思。通过调试找出问题代码后进行修改,使其变成正确的程序。

在Eclipse中调试的步骤如下。(1)首先打开欲调试的项目。(2)如图1-11所示,在程序中找到想要调试位置的代码行的前方双击设置断点,或者把鼠标移动到代码行,用快捷键Ctrl+Shift+b设置断点。(注意line 7前面的圆点,就是所设的断点)。(3)在程序窗口单击鼠标右键,选择“Debug As→Java Application”。在弹出的对话框中单击Yes,进入debug模式。在debug窗口的左下方是程序执行窗口,如图1-12所示。图1-11 在程序行设置断点图1-12 debug调试程序(4)单步执行。F5键和F6键为单步调试命令,F5(step into)键可以使调试跟踪到被调方法中,F6(step over)键直接调用方法而不跟踪方法的执行,F7键是跳出方法返回到主调方法处。图1-13 debug过程中变量值窗口(5)在单步执行过程中,可以看到代码中的变量与对应值,如图1-13所示,读者可以结合当前语句进行对比分析。1.4 Java语言与Java技术

学习Java目的是什么?这是个令初学者普遍感到困惑的问题。早一天解除困惑,早一天学习就更有目的性,更有效率。因此有必要从Java技术全局角度考察Java语言的作用,使读者最初学习Java语言开始就面向应用、面向开发、着眼长远。

学习Java,必经的过程就是编写程序。但是,若要求开发企业应用系统,仅有Java是不够的。虽然Java语言是重要的基础,但还需进行知识结构扩充。那么,后续读者如何扩充知识,扩充什么样的内容?下面,我们将给出Java技术概况,读者可以在掌握Java语言的基础上,循序渐进地学习Java技术的其他内容,逐步培养系统设计开发能力。

Java技术包括Java SE、数据库访问技术、前端技术、服务器端技术等。

需要说明的是:图1-14中给出的是一个Java技术的学习内容概况,不是严格的课程划分。图示的内容和次序,可以作为建议读者学习的主要内容和先后次序。图1-14 Java技术组成

Java语言是基础,是Java技术系列课程的先修课程。但是,我们可能在学习某些后续内容的时候,需要回过头来再次深入研读Java,例如,Java多线程知识、注解作用、反射机制、动态代理机制、Lambda表达式的内容等;我们也可能在后续大量应用的时候,需要深入研究它们的用法。因此,我们对Java语言的认识是不断深化的。1.5 怎么学习Java

学习Java语言,先要解决入门的问题。要找到阻碍入门的难点,一个一个地克服,这样才能有效率。本节分析了读者在学习Java语言过程中可能遇到的困难,并提出了有针对性的解决方法。1.5.1 入门之道

人们发明工具扩展自己的能力。飞机使人“飞翔”在天空、潜艇使人“遨游”在深海。使用任何工具都需要学习工具的用法。工具越复杂,学习越费时间。学习开飞机一定比学习骑自行车费时。计算机是人类一项伟大的发明,它是用来帮助人们进行脑力劳动的机器。因为它复杂,所以,需要较长的时间来学习。

人们常说:万事开头难。程序设计入门之难,难在何处?只有锁定难点,才能攻坚克难。(1)难在基础知识不具备。对于学习Java所需要的基础知识我们为读者进行了全面的梳理,在本章的插页中对于Java的基础知识分别做了系统讲解。如果对计算机的基本组成和工作原理以及计算机解题过程不了解,如果没有掌握某些必备的基础知识,例如数制知识和数在内存中的存储形式,就不能很好地理解位的左右移算符的操作。如果不知道数的补码表示,就不能得出并理解如图1-15所示的代码的运行结果,就不知道0-1的结果是-1,不知道int型最大正整数2147483647+1,得到的是int型最小负整数-2147483648,详见图1-15所示的代码和运行结果。图1-15 int的最大值和最小值(2)难在目的不清晰。如果对程序设计语言以及编写程序的目的和意义不甚了解,学习写程序就没有目的,也建立不起来兴趣,不可能有持久的动力。(3)难在语法知识不准确、不扎实。如果对程序设计语言的语法知识掌握不全面、不准确,那么写程序就会困难重重。语法知识是枯燥乏味的,在这一点上计算机语言和自然语言是一致的。如果识字不多、词汇量缺乏,不懂语法规则,写文章的难度可想而知。同样地,对程序设计语言的语法规则不熟悉,写不出程序,或者即使勉强写出程序,也是错误连篇的。(4)难在数学基础薄弱,抽象思维能力不强,对数学的作用认识不清晰。例如要求编写用梯形法计算定积分的程序,如果不知道梯形法求定积分的数学原理,写程序就无从下手。(5)难在知识的综合运用。算法和数据结构通常属于程序语言课程的后续课。但是,尼克劳斯·沃思(Niklaus.Wirth)的著名公式:程序=算法+数据结构指出了算法和数据结构对于程序设计的重要性。所以,读者需要超前学习一些常用算法和数据结构知识。(6)难在问题分析不准确。编写的程序不能正确实现问题自身的计算和逻辑,执行结果会显得答非所问。(7)难在思维方式不匹配。如果从人类解题方式到机器解题方式的转变(Transition)不做充分的训练,二者之间的思维方式差异将成为学习编程序最大的绊脚石。

我们常说用汉语思维、用英语思维,是指用语言建模我们的思维过程,表达思维结果。计算机语言是形式语言,和自然语言在表达思维的形式上差异很大。(1)自然语言词汇丰富、语法复杂、有引申义、有歧义、有冗余、有模糊表达。(2)形式语言词汇和语法规则有限、无引申义、无歧义、无冗余、要精确表达。

例如说:“如果我们不能按期完成,如果我们不能保证质量,那么我们的工程是失败的。”

在计算机程序中,直接翻译成下面的逻辑是错误的。if(finished Date>expired Date)if(quality Level

为什么这个逻辑是错误的?显然,自然语言中两个如果叠句之间是或的关系,但是,在计算机语言中,连续的两个if语句的条件表达式是与的关系。后面的if是前者的嵌套的if语句。因此需要修改成下面的格式才能与自然语言逻辑一致。if(finished Date>expired Date ||quality Level

再如,自然语言中某数x的n次方,有多种表达方式,写成数学式子也有x^n、xn等形式。但是在Java语言中,只能是Math.pow(x,n)这种形式了。如果写成下面的形式,那就已经不是表达式了。

for(inti = 1; i <=n; i++) y = y*x;

初学者普遍有一种感觉是高级语言死板。但如果高级语言定义不严格,恐怕编译器就受不了了。

读者学习高级语言的语法语义规则,及程序结构知识,通过对具体问题求解过程的积累,可逐步达成从人类解题方式到机器解题方式的转变。

概括地说,读者只有打好坚实的基础,写程序才能快速入门。从手工计算到利用计算机,正如从步行到乘飞机,计算速度有了大幅度提高。人类只有为计算机编程序,才能“乘机”而行,享受高速计算带来的快乐。而编程序,需要具有的基础知识和能力类似于图1-16所示的梯级上升状,让我们拾级而上,踏上编程之旅吧!图1-16 编程需要的基础知识1.5.2 精通之路

俗话说:师父领进门,修行在个人。入门不能一蹴而就,精通更需要较长时间。读者在学习过程中应注重实践、多做编程练习,同时还需要注意,方向正确、方法得当。

所谓方向正确指的是:要进行Java知识的拓展。Java的类数量多,从最初的几百个类到目前的几千个类,不可能在一本书中完全讲解。程序员由于不知道类库中有某个现成的类可用,自己辛辛苦苦地从头写一个,浪费了宝贵时间。在充分理解本书所讲解内容的基础上,读者应多研读一些Java经典著作,诸如《Head First设计模式》、《Java Language Specification》(Third Edition)(James Gosling著)、《Thinking in Java》(Bruce Eckel著)、《Effective Java中文版》、《Java并发编程实战》、《重构改善既有代码的设计》等书。

所谓方法得当,读者应注意实现几个转变:从语法到语用的转变、代码数量积累到代码质量提高的转变、学习Java语言到研究Java技术的转变、写程序(program)到做项目(project)的转变。

总体而言,读者要通过扩展阅读、研究技术、完成项目,逐渐走向精通Java的境界。

拓展知识James Gosling,Java之父James Gosling 在12岁时已经能设计电子游戏机,帮助邻居修理收割机。他大学时期在天文系担任程序开发工读生,并于1977年获得了加拿大卡尔加里大学计算机科学学士学位。1981年James Gosling开发了Unix上运行的Emacs类编辑器Gosling Emacs(以C语言编写)。1983年他获得了美国卡内基梅隆大学计算机科学博士学位。毕业后James Gosling来到IBM工作,设计出了IBM第一代工作站系统,但不受重视。后来他转至Sun公司工作。1990年,James Gosling与Patrick Naughton和Mike Sheridan等人合作开发了“绿色计划”项目,该项目后来发展成了一套语言叫做“Oak”,后改名为Java。1994年底,James Gosling在硅谷召开的“技术、教育和设计大会”上展示了Java程序。2000年,Java成为世界上最流行的计算机语言。2009年4月,Sun公司被甲骨文公司并购。James Gosling于2010年4月时宣布从甲骨文公司离职。2011年3月29日,他宣布加入Google。2011年8月30日,仅仅加入Google数月之后的James Gosling宣布离开,加盟了一家从事海洋机器人研究的创业公司Liquid Robotics,并担任首席软件架构师。2017年5月22日,James Gosling加盟亚马逊云计算部门。1.6 小结

本章介绍了Java语言的产生、发展历程和Java语言的主要特点,并通过两个简单的程序说明了Java程序的类型和结构特点。最后介绍了开发工具和开发环境的安装和配置方法。这是学习和运用Java的基础。俗话说:眼见为实,希望读者自己动手练习本章介绍的方法,为自己搭建好进一步学习所必需的软件环境。1.7 习题

1.Java编译器的输入和输出分别是什么文件?

2.Java集成开发环境有哪些?

3.简述你对Java语言的面向对象特性的理解。

4.Java语言的平台无关性指的是什么?

5.上机练习例1.1。

6.在例1.1中用Main替换main,验证编译能不能通过?

7.用java Example1_1.class运行程序,结果如何?

8.Java和HTML的关系是什么?

9.Java源文件和字节码文件的扩展名分别是什么?

10.什么是注释?Java有几种注释?编译器忽略注释吗?

11.通过上机验证找出下面代码中的错误。public Class Welcome{public void main(string []args){system.out.println(“Welcome to learn Java!”);}}

12.将下列十进制数转换为十六进制和二进制数:

100;4340;1000

13.将下列二进制数转换为十进制数:

10001110;10010011001;1000000000000000

14.Java程序有哪些组成部分?

15.整数和浮点数在计算机内存中是如何存储的?什么是数的原码、反码和补码?第2章Java语言基础语法2.1 数据类型和运算符号2.1.1 Java数据类型整型数

Java语言本身定义的数据类型称为基本数据类型。在基本数据类型的基础上,还可以定义其他数据类型,称为自定义类型,如后面讲到的类、接口和枚举等。在实际进行程序设计时,多数情况下,都要根据问题自定义数据类型。

基本数据类型是自定义数据类型的基础,所以读者在学习时应该先掌握好基本数据类型。

Java中的基本数据类型有字节型(byte)、短整型(short)、基本整型(int)、长整型(long)、单精度型(float)、双精度型(double)、布尔型或逻辑型(boolean)和字符型(char)。

基本数据类型可以分为4个类型,即整型数、实型数(浮点数)、布尔型数和字符型数,可以用图2-1表示基本数据类型的组成。图2-1 基本数据类型分类1. 整型数

没有小数部分的数值型数就是整型数,如123、-456等,而123.0、-456.78则不是整型数。(1)字节型。用一个字节(8个二进制数)表示整型数,所以一个字节型数表示数的范围是-128~127。使用字节型数,在有些情况下可以节省内存空间。(2)短整型。用两个字节(16个二进制数)表示整型数,一个短整型数表示数的范围是-32768~32767。(3)基本整型。用4个字节(32个二进制数)表示整型数,一个3131基本整型数表示数的范围是-2~2-1。(4)长整型。用8个字节(64个二进制数)表示长整型数,一个6363长整型数表示数的范围是-2~2-1 。

给定一个整型数,它的默认类型是基本整型,如123、-456都是基本整型数。如果想使一个整数表示的是长整型数,则可以在整型数后加L或l,如123L、-456l是长整型数而不是基本整型数(小写l容易与1混淆,所以最好不要用小写l)。

没有单独表示字节型数和短整型数的方法。在定义变量时(请参照变量定义),如果给变量赋的值不超过相应类型的范围,则该数就是相应的类型。如:byte b=123; //字节型变量b的初值是123short s=12345; //短整型变量s的初值是12345

整型数还可以用八进制、十六进制和二进制的形式表示。

用八进制表示时,使用数字0~7,并且数据以0开头。如:0123、0447都是八进制数,而0789则是非法数据。

用十六进制表示时,使用数字0~9和字母A~F(或a~f)表示,并且以0x(或0X)开头。如:0x123、0x45fa、0x97AE等都是十六进制数。

用二进制表示时,只使用数字0和1,并且以0b(或0B)开头。如:0b1101、0B010011都是二进制数,而0b123则是非法数据。

在进行科学计算时,一般不使用八进制、十六进制或二进制的形式表示整型数,而是使用十进制数的形式表示整型数。在写计算机系统程序时,使用八进制、十六进制和二进制表示数据时较为方便。2.浮点数浮点数、布尔型数

带有小数点的数值数就是浮点数。如:123.、123.0、123.45都是浮点数。

浮点数所表示的数据是有误差的。浮点数根据其所表示数的精度可以将浮点数分为单精度数和双精度数。

一个浮点数默认为是双精度度数,如123.0是一个双精度数。如果想明确地说明一个数是双精度数,可以在数据的后面加D或d,如:123.0d、-456.78D都是双精度数。

如果在一个浮点数后面加F或f,明确地表示该数是一个单精度数。如:123.0f、-456.78F是单精度数而不是双精度数。

浮点数可以用指数形式表示。如:123.45e3、-1.25E-5F、12.456e1 D使用指数形式表示浮点数时,e或E的前面必须有数字,其后面必须是一个整型数。如:12.3e、12.3e2.5、e-3等不是合法的指数形式的浮点数。3.布尔型数字符型数

布尔型数是逻辑值,用于表示“真”和“假”。

布尔型数的值用true和false表示。true表示“真”,false表示“假”。4.字符型数

用单引号引起的单个字符就是字符型数。如:'a' 'X' 'd' '2' '8' '中' '国'等都是字符型数。

在Java中,任何一个字符型数都是Unicode字符集中的字符。Unicode是计算机科学领域中的字符编码标准,在这个字符集中为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

由于用两个字节的编码表示字符,所以字符集中最多可以有65535个字符。字符"(空字符,或0,或' \u0000' ——十六进制表示的转义字符)在表中有最小值,而字符' \uffff '在表中有最大值(65535)。

在编写程序时,有些特殊字符无法在程序中输入,这时可以用转义字符来表示。转义字符是字符'/'和个别字符组合而形成的字符,组合之后的字符表示的是其他字符。转义字符及含义如表2-1所列。表2-1 转义字符及含义续表

如:

字符'a'用转义字符表示可以写成'\141'或'\u0061'

字符'2'用转义字符表示可以写成'\62'或'\u0032'(字符'2'的Unicode编码为50)

表面上看,字符是非数值型数据,但是字符在内存中存储时存放的是字符的Unicode编码,而Unicode编码是一个整型数,所以有些情况下可以把字符型数当作整型数。例如,将数值8转换成字符'8',可以进行下面的运算:

(char)(8+'0')“8+'0'”运算时先获得字符'0'的Unicode编码(整型数),再和8相加,得到'8'的Unicode编码(整型数),再将这个编码强制转换成字符型数,最后得到字符'8'。5.字符串型数

当需要表示一个人的姓名、专业、班级和通信地址等信息时,必须使用文字来表示。在Java程序中,用文字表示的信息也是数据(非数值型数据),这样的数据在程序中以字符串的形式表示。字符串是用双引号引起的若干字符序列,如:"Math""This is a Java program.""China""123""Beijing"等都是字符串。字符串中可以包含转义字符。

字符串不是基本类型的数据,但是通常情况下都被当作是基本数

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载