零基础学Java(第4版,丛书畅销30万册,全新版隆重上市)(txt+pdf+epub+mobi电子书下载)


发布时间:2021-03-28 23:48:26

点击下载

作者:常建功

出版社:机械工业出版社

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

零基础学Java(第4版,丛书畅销30万册,全新版隆重上市)

零基础学Java(第4版,丛书畅销30万册,全新版隆重上市)试读:

前言

Java语言拥有面向对象、跨平台、分布式、高性能、可移植等优点和特性,是目前应用最广泛的编程语言之一。Java语言不仅可以制作网站后台,而且还能够操作各种操作系统;不仅可以应用于多媒体开发,而且还可以制作大型网络游戏;同时目前最流行的手机操作系统Android也是在Linux内核的基础上通过Java语言实现的。

本书的目的是让读者对Java语言语法有更进一步的了解,尤其为新手进入编程行业提供一个全面学习的阶梯。笔者结合自己多年的学习和编程经验,为广大程序员详细介绍了Java的全部语法,使Java程序员能够提高自己的基础知识、完善自己的知识结构、扩宽自己的知识面。

在讲解知识点时,笔者采用由浅入深、逐级递进的学习方式。本书是Java语言初、中级学习者的绝佳入门指南。本书特色

本书详尽介绍了Java语法的特点和Eclipse、MyEclipse的编程环境,在组织与取材方面尽量让读者能够正确、全面地掌握该语言的优势,建立牢固的知识体系,当Java新版本出现时,能够有能力欣赏与感悟新版本所带来的激动人心的变化。通过对本书的学习,任何想用Java语言做项目的开发人员都能够有所收获。本书语言简练、循序渐进,实例简洁明了、易于学习。

本书的特点主要体现在以下几个方面。

·本书的编排采用由浅入深、循序渐进的方式,各章主题鲜明、要点突出,适合初、中级学习者逐步掌握Java语法规则和面向对象编程思想。

·本书对Eclipse、MyEclipse编程环境的各种应用都做了详细的介绍,适合初、中级学习者快速熟悉并使用该编程环境。

·实例丰富,关键知识点都辅以实例帮助读者理解。实例程序简洁,不是简单的代码罗列,而是紧扣所讲的技术细节采用短小精炼的代码,并配以详细的代码解释和说明,使读者印象深刻,理解透彻。

·实例可移植性强,与编译环境和平台无关,读者可轻易将代码复制到自己的机器上进行实验,自行实践和演练,直观体会所讲要点,感受Java语言的无限魅力。书中所有例子的源代码都附在随书光盘中,方便读者使用。

·结构清晰、内容全面,几乎兼顾了所有Java语言特性。

·本书结合笔者多年的Java语言编程和系统开发经验,特别标注出易出错的技术点或初学者易误解的细节,使读者在学习中少走弯路,加快学习进度。

·很多Java语言书籍只讲语法规则,不讲数据结构和编程思想,读者即便掌握了语法理论,也无法写出大型的Java语言程序。本书弥补了这些不足,介绍了数据结构和算法的知识,阐述了结构化程序设计的思想,探讨了高质量编程的内容,为读者进一步深入学习软件开发打下基础。本书内容

本书分为四篇,共25章,结合目前最流行的软件编程环境,全方位介绍了Java的编程思想及特色。本书首先讲述Java语言的语法知识,使读者对Java语言语法和编程机制有一个初步的了解。如果将编写Java语言程序比作盖房子,语法知识就相当于砖瓦水泥。接着进一步介绍Java语言编程中常用的操作,即Java语言编程主题、一些深层次的技术细节,以及理解起来比较困难、易出错的要点。最后结合笔者的开发经验详细讲解了一个项目案例和一些面试技巧。

第一篇(第1~4章)Java语言语法基础——面向过程知识

该篇讲述了Java语言语法基础知识,包含面向过程涉及的所有语法:Java技术概览、Java开发工具及环境设置、Java语言中的数据与运算符、程序设计中的流程控制。读者通过学习本篇可对Java语言面向过程语法有一个初步而全面的认识,了解Java语言的由来及强大功能,明确Java源文件的编译和运行过程,熟悉Java语言程序的结构,知道如何声明变量,如何通过三大流程控制语句组织程序。学完本篇读者便可自行编写简单的Java语言程序。

第二篇(第5~11章)Java语言语法进阶——面向对象知识

Java语言之所以被称为高级语言,因为它实现了面向对象思想,它具有关于面向对象的语法。本篇从如何设计类、创建对象和组织包讲起,介绍了这些概念的详细语法。然后重点讲解如何通过Java语言实现面向对象思想的三大特性:继承、多态和封装。学完本篇才算真正了解Java语言语法。

第三篇(第12~23章)Java语言编程主题

在具体开发Java语言程序时,会进行一些常用操作,如文件的操作和访问、异常处理和内存管理、数据的存储和操作、XML文件的创建和解析、数据库的连接、网络编程和界面的设计。本篇通过12章的内容详细介绍了上述编程主题,学完本篇读者可以迅速地开发Java语言程序。

第四篇(第24~25章)Java语言程序设计实例与面试题剖析

本篇的目的是让读者掌握Java语言开发案例和实践项目,虽然这里只提供了学校管理系统项目的开发,但读者重点掌握的是Java语言语法和项目开发流程,最后一章通过一些常见的Java语言面试题,为读者踏入职场做好准备。读者对象

本书作为Java语言的基础教程,适合于:

·希望进入Java编程行业的新手。

·迫切希望提高个人编程技能和水平的初级程序员。

·具备一定编程经验但是语法基础不牢固的工程师。

·希望了解Java语法最新变化的程序员。

·希望了解和使用Eclipse和MyEclipse工具的程序员。

·需要一本案头必备查询手册的人员。本书作者

本书由常建功、陈浩和平顶山学院的黄淼主编,其中第1~5章由常建功编写,第6~10章由陈浩编写,第11~25章由黄淼编写,其他参与编著和资料整理的有冯华君、刘博、刘燕、叶青、张军、张立娟、张艺、彭涛、徐磊、戎伟、朱毅、李佳、李玉涵、杨利润、杨春娇、武鹏、潘中强、王丹、王宁、王西莉、石淑珍、程彩红、邵毅、郑丹丹、郑海平、顾旭光。第一篇 Java语言语法基础——面向过程知识第1章 Java技术概览

Java是一种出色的面向对象跨平台编程语言。在当今的软件领域几乎无处不见Java语言活跃的身影,然而Java语言究竟是什么?本章将从两个方面解释Java的“身世”——Java既是一种编程语言,也是一个软件平台。本章还将从多个方面分析Java到底能为我们做什么。

本章重点:

·Java语言的功能和特点。

·学习创建简单的Java程序。

·学会处理常见的Java编译错误。1.1 Java技术

Java既是编程语言也是软件平台,作为编程语言的Java有一套自己的机制,实现源程序到处理器可执行程序间的过渡与转换;作为软件平台,Java为程序员提供了编程接口和Java虚拟机(Java Virtual Machine,JVM),下面将依次介绍。

1.1.1 认识Java语言

Java作为一种高级语言具有许多优良特性,如跨平台、面向对象、分布式、多线程、安全性、健壮性、简单性等;这些优良的特性在读者学习完本书后会深有体会。

在Java语言中所有源代码都可以通过无格式的记事本编写,并保存为.java文件,因为通过该扩展名,Java编译器会知道该文件是自己可以处理的文件。经过编译后的文件为.class文件,该文件是字节码文件,此时.class文件不能被处理器直接读取执行,必须通过虚拟机转换成二进制文件后,才可以被处理器执行。图1-1是Java程序的开发过程,整个过程说明了上面叙述的内容。图1-1 Java程序的开发过程

Java是跨平台的高级编程语言,这里的平台是指操作系统平台,如Windows、UNIX、Mac、Linux等。使用Java语言编写的程序一次编译就可以在所有上述平台上运行,就是因为有Java虚拟机的存在。Sun公司(已被Oracle公司收购)提供了在各种操作系统平台上运行安装的Java虚拟机,Java虚拟机可以执行.class文件。这样也就实现了众所周知的“一次编译,随处运行”的理想。图1-2演示了在不同平台上通过Java虚拟机执行Java程序的过程,从中可以清楚地理解Java虚拟机的作用。

注意 图1-2中的“HelloWorld.class”也代表一个应用程序,应用程序本身就是经过打包的.class文件的集合。并且在不同的平台上安装的JVM是不同的,需要到官方网站上下载适合自己机器操作系统平台的虚拟机。

1.1.2 认识Java平台

Java语言也是一种软件平台。平台可以理解为软件运行所需的软件或硬件环境,如操作系统可以看作软件平台,它提供了应用程序运行的环境,如在Windows XP操作系统上运行Word字处理程序。当然如果从用户的角度看,操作系统其实是软件和硬件相结合的综合平台,因为操作系统对硬件的操作该用户是看不见的,但是操作系统又确实管理并运行在硬件平台上。

而Java语言作为软件平台,为Java源程序编写和运行提供了完善的环境。但是该Java提供的软件平台不与硬件发生任何关系,该平台是纯软件平台,运行在操作系统上。不同的操作系统编写了相应的JVM。作为软件平台的Java由两部分组成:

·Java虚拟机(Java Virtual Machine,JVM):Java虚拟机是Java软件平台的基础,基于不同操作系统的平台对应不同的虚拟机。

·Java应用编程接口(Java API):API是一套编写好的软件组件的集合,这些API按照功能通过包(package)来提供,包就是一系列具有相似功能的类和接口的集合。图1-3是Java虚拟机和应用编程接口与各种操作系统的软件层次关系。图1-2 不同平台上通过JVM执行Java程序图1-3 Java API和Java虚拟机

说明 在操作系统上加一层Java虚拟机,使得Java实现了平台的独立性,但是这也使得Java程序比C或C++语言编写的程序要慢一点,但是随着编译器的改进以及虚拟机技术的成熟,二者之间的差距会越来越小。

1.1.3 Java语言的功能

Java语言作为完善而强大的软件平台,每个版本的Java平台都会提供如下的功能或组件。

1.开发工具

开发工具提供了诸如编译、执行、调试、文档化等功能,使得开发人员可以使用这些工具来编译、调试自己的程序。初学者经常使用的Java工具有Javac源程序编译工具、Java程序执行工具和Javadoc源程序的文档化工具等,具体的功能将在本章后面介绍。读者将会了解如何使用Javac和其他Java工具。

说明 Javac编译工具其实就是在DOS下运行的一个命令,而DOS命令不区分大小写,所以本章有时候在DOS窗口中输入命令的时候,也直接说是javac命令。

2.应用编程接口(API)

Java API提供了Java语言的核心功能,开发人员可以直接调用这些方法或实现其中的接口来满足自己程序设计的需要,如需要对数据进行排序或搜索,Java提供了具体的类来实现,开发人员只要了解这些类的基本功能和类中的方法就可以调用这些功能。读者可以翻阅JDK的HTML文档来搜索自己需要的功能。

3.用户接口工具集

其实这个工具集就是提供如何编写用户接口程序(即GUI程序),为应用程序提供一个友好的用户界面,任何复杂的程序界面都可以通过该工具集中的类或接口实现,具体请参看本书的第20章。

4.集成类库

该类库提供了集成工具来完成复杂的行为,如Java为访问数据库提供了JDBC API;为实现远程方法提供了Java RMI,该方法实现了对网络远端的Java程序的调用,是Java实现分布式计算的重要基础。

1.1.4 Java语言的优点

Java语言与其他语言(如C++、Delphi、C#等语言)相比,有自己的优势,无论你学习Java的初衷如何,Java语言确实使你的程序更友好,并且减少了你的工作量。下面将介绍Java语言的优点以证实上述说法。

1.入门更快

因为Java语言是一门强大的面向对象语言,所以只要理解面向对象技术(符合人类处理事情时的思维方式),就很容易学习这门语言。如果读者已经学习过C++语言或C语言,将更容易进入Java世界。

2.代码量少,开发速度更快

同C++语言比较,同样的程序使用Java语言编写只需要较少的类和方法。Java语言比C++语言简单,相同功能的程序需要更少的代码行。

3.编码更容易

Java语言提供良好的编码规范,使得Java语言编写的程序具有统一的“外表”,并且Java支持垃圾回收机制(GC),所以不会像C++中那样出现内存泄漏的问题,这样开发人员就可以集中精力编写程序所需的类,而不用考虑何时、如何回收这些类对象了,只要在需要时创建对象即可,其他操作都由GC处理。Java的面向对象特性、JavaBeans组件架构和功能强大的API,都使得开发人员可以容易地重用经过严格测试的代码,这些API的使用也减少了程序中Bug的数量。

4.避免平台依赖,程序的平台独立性

Java语言编写的类库可以在其他平台上的Java应用程序中使用,而不像C++语言必须依赖于Windows平台。Java源程序被编译成字节码,字节码通过操作系统平台上的JVM来解释而获得运行,这样使用Java语言编写的程序不依赖于特定的平台,实现“一次编写,随处运行”。

1.1.5 Java分布式应用和多线程的特点

本节讲述Java程序的分布式和多线程的特点。分布式包括数据分布和操作分布。数据分布是指数据可以分散在网络的不同主机上,操作分布是指把一个计算分散在不同的主机上处理。

Java支持客户机/服务器计算模式,因此它支持这两种分布。对于数据分布,Java提供了一个叫做URL的对象,利用这个对象,可以打开并且访问具有相同URL的对象,访问方式与访问本地文件系统相同。对于操作分布,Java的Applet小程序可以从服务器下载到客户端,即部分计算在客户端进行,提高系统执行效率。有关分布式的原理如图1-4所示。图1-4 分布式示意图

Java提供了一整套网络类库,开发人员可以利用这些类库进行网络程序设计,方便地实现Java的分布式特性。

线程是操作系统的一种新概念,线程又被称作轻量进程,是比传统进程更加小的,并且可以并发执行的单位。C和C++采用单线程系统结构,而Java提供了多线程的支持。

Java在两方面支持多线程。一方面,Java环境本身就是多线程的。若干个系统线程运行,负责必要的无用单元回收、系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序的开发。

Java提供了一个Thread类,由它负责启动、运行、终止线程,并且可以检查线程状态。Java线程还包括一组同步原语,这些原语负责对线程实行并发控制。利用Java的多线程编程接口,开发人员可以方便地写出支持多线程的应用程序,从而提供程序执行的效率。Java的多线程在一定程度上受运行时所在平台的限制,如果操作系统不支持多线程,那么Java程序的多线程特性就不能表现出来。

1.1.6 Java程序的可靠性、安全性

本节将详细讲述Java的可靠性和安全性。Java最初的设计目的是针对电子类消费品中的应用,因此要求较高的可靠性。Java虽然源于C++,但它消除了许多C++不可靠的因素,可以防止许多编程错误。

它的可靠性和安全性表现在如下几点:

·Java是强类型的语言,要求显式的方法声明。这保证了编译器可以发现方法调用错误,保证程序更加可靠。

·Java不支持指针,这杜绝了内存的非法访问。

·Java的自动单元收集功能,可以防止内存“丢失”等动态内存分配导致的问题。

·Java解释器运行时实施检查,可以发现数组和字符串访问的越界问题。

·Java提供了异常处理机制。

由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载执行程序就非常危险。Java通过自己的安全机制,防止了病毒程序的产生,以及下载程序对本地系统的威胁破坏。

当Java字节码进入解释器时,首先必须经过字节码校验器的检查,然后Java解释器将决定程序中类的内存布局。随后,类装载器负责把来自网络的类装载到单独的内存区域,避免应用程序之间相互干扰破坏。最后,客户端用户还可以限制从网络上装载的类只能访问某些文件系统。上述几种机制结合起来,使得Java成为安全的编程语言。

1.1.7 Java小程序和应用程序

用Java可以写两种类型的程序:小程序和应用程序。小程序就是嵌入在网页文档中的Java程序,而应用程序就是在命令行中运行的程序。对Java而言,对小程序的大小和复杂性都没有限制。事实上,Java小程序有些方面比Java应用程序更加强大。目前,由于Internet的通信速度有限,因此大多数小程序规模较小。小程序和应用程序之间的技术差别就在于运行环境。

Java应用程序运行在最简单的环境中,它的唯一外部输入就是命令行参数。而Java小程序需要来自Web浏览器的大量信息,它需要知道何时启动、何时放入浏览器窗口、何处和何时激活与关闭等。由于这两种不同的执行环境,小程序和应用程序的最低要求不同。1.2 Windows下的“HelloWorld”应用程序

到本节为止,笔者还没有介绍如何编写Java程序。当然程序的编写、编译和执行都需要一定的软件环境或编辑工具,所以在写Java程序前需要做些准备工作,最基本的即需要两个软件,一个是JDK(Java开发工具集),另一个是文本编辑工具。在1.2.1节将介绍这两个软件,在1.2.2节将介绍创建一个Java应用程序的步骤。

1.2.1 创建应用程序的软件环境

JDK即Java开发工具集,就是为开发Java程序提供了一套工具,包括源程序的编译、调试、运行等工具,并提供了一些API接口工具。读者可以到Oracle网站下载JDK并安装使用,这部分内容在本章的后面会有更详细的介绍,这里读者只需要知道开发Java程序需要安装JDK即可。

对于初学者而言,编写Java源代码的工具最好选择无格式的文本编辑器,Windows自带的记事本就是很好的Java源程序编写工具。可以打开Windows平台的记事本,如图1-5所示。单击“开始”|“运行”命令,在弹出的“运行”对话框内输入“notepad”命令,然后单击“确定”按钮就会打开记事本。图1-5 打开Windows平台的记事本

1.2.2 创建“HelloWorld”应用程序的步骤【实例1-1】本节通过一个实例介绍开发Java应用程序的步骤,该实例程序为HelloWorld.java,它的功能很简单,就是在标准输出端打印字符串“HelloWorld!”。下面演示创建步骤。

说明 本例只是介绍Java程序创建、编译、运行的整个流程,并不需要读者亲自动手,读者可以在看完第2章的JDK安装和设置后再来创建本例练习。

1.创建源程序文件

该文件包含使用Java语言编写的代码,当然这些代码要符合Java规范。可以使用任意的文本编辑器来创建Java源程序文件。实例程序如下所示。01 /**02 HelloWorld类的功能是在标准输出端03 打印一行输出“HelloWorld!”04 */05 public class HelloWorld{ //定义类06 public static void main(String[] args){ //主方法07 System.out.println(“HelloWorld!”); //调用标准输出打印字符串08 }09 }【代码说明】

·第1~4行是Java的注释语句,这里实现了多行注释的效果。

·第5行是类的标识class。

·第7行是输出语句。语句后面又使用了“//”表示Java的单行注释。图1-6 保存源文件为.java文件

把在文本编辑器(笔者使用Windows的记事本)中编写的程序另存为“HelloWorld.java”文件,保存源文件为.java文件的过程如图1-6所示。

注意 保存的文件名一定为“HelloWorld.java”,保存类型选择“文本文档(*.txt)”,而编码选择ANSI,单击“保存”按钮,然后退出记事本编辑器。记住保存目录,在编译时需要该目录来指定源文件所在的位置。

2.编译源程序

首先选择“开始”|“运行”命令,然后在弹出的“运行”对话框内输入“cmd”命令,则打开一个DOS窗口。该窗口的目录提示为当前目录,该目录通常是Windows XP的主目录,如图1-7所示。

为了编译文件,需要改变当前目录到源文件存放的目录下,如源文件在C盘的javacode目录下,则需要在当前DOS提示符下输入“cd C:\javacode”,再按Enter键,则当前的DOS提示符会变为C:\javacode。但是如果源文件目录与当前DOS目录不在同一个磁盘上,如在D盘,则需要首先输入“D:”,再按Enter键,则DOS提示符会进入D盘,再输入源文件的路径,按Enter键则进入源文件目录。图1-8是切换到源文件目录的状态。图1-7 DOS窗口图1-8 切换到源文件目录

为了检验是否进入了源文件所在目录,在图1-7所示的目录下输入“dir”命令,发现了刚才保存的HelloWorld.java文件。图1-9是查看当前目录下的文件。

现在可以编译源程序了,在图1-7所示的当前目录下输入命令“javac HelloWorld.java”来编译源文件,一旦编译成功,则在当前目录下会生成HelloWorld.class文件,在DOS提示符下输入“dir”命令查看,会发现新生成的.class文件。图1-10是查看.class文件的效果。图1-9 查看当前目录下的文件图1-10 查看.class文件

说明 调用javac命令的前提是已经安装了JDK并且设置了环境变量,将JDK提供的工具命令告知Windows系统。直到Windows系统知道到哪里寻找用户输入的javac命令。JDK环境变量的设置请参考第2章中的设置,为了节约篇幅这里不再赘述。

3.运行源程序

在编译完程序后需要运行程序,运行程序很简单,在当前目录下输入“java HelloWorld”命令,这里的HelloWorld就是刚才编写的类的名字。执行结果如图1-11所示。

读者如果看到如图1-11所示的执行结果,说明HelloWorld程序执行成功了。在本例的源程序中,读者或许有很多疑惑,如main()函数起什么作用?该函数的参数又如何使用?为什么可以直接调用System.out.println(“HelloWorld”)?等,这些疑惑将在下一节详细解释。图1-11 HelloWorld程序执行结果1.3 深入探讨“HelloWorld”应用程序

本节将详细介绍HelloWorld源程序,在1.2节读者已经看到如何编写、编译和执行Java源程序。但是读者或许想知道源程序到底是如何运行的。为了更好地说明,这里再次列出该代码程序。01 /**02 HelloWorld类的功能是在标准输出端03 打印一行输出“HelloWorld!”04 */05 public class HelloWorld{06 public static void main(String[] args){07 System.out.println("HelloWorld!"); //调用标准输出打印字符串08 }09 }

该源程序包括三个部分:程序注释、类定义和main()方法。通过对这三部分的说明,读者应该理解程序HelloWorld的基本执行过程。至于更细节的内容,后面的章节会继续讲解。

1.3.1 注释源代码

在程序中有这样的注释部分,如以下代码所示:01 /**02 HelloWorld类的功能是在标准输出端03 打印一行输出“HelloWorld!”04 */

这是Java的注释部分,其格式是“/**注释*/”,程序会忽略注释的内容。

良好的注释可以增强程序的可读性和可维护性,读者应该养成注释的习惯。Java支持三种注释方式。

1)双斜线“//”在程序中表示注释,注释的字句不会编译,即编译器会略过该行。如:System.out.println("Hello Java!!!"); //在DOS窗口打印一行字符:Hello Java!!!“//”表示单行注释,一般用在代码行的后面。

2)另一种注释方式实现多行注释,使用“/*多行注释内容*/”这种方式。如:01 /*定义一个类02 该类是示例程序,程序提供了一个入口,执行结果是在DOS窗口打印一行字符串03 “Hello Java!!!”04 */

3)内嵌式文档注释。该类注释多用在集成开发环境下,如JBuilder、Eclipse等,其方式如下:01 /**02 注释内容03 */

该注释可以出现在类和接口的声明前、各种方法(函数)的定义前。在集成开发环境中,只要输入“/**”,再按回车键,就会自动形成注释的样式。

1.3.2 实现类定义

下面代码的粗体字部分是类定义部分,其语法格式是class classname{code},其中关键字class声明这是一个类,后面紧跟类名HelloWorld,用两个大括号括起来的部分是类定义的主体部分。01 /**02 HelloWorld类的功能是在标准输出端03 打印一行输出“HelloWorld!”04 */05 public class HelloWorld{ //定义类06 public static void main(String[] args){ //主方法07 System.out.println("HelloWorld!"); //调用标准输出打印字符串08 }09 }【代码说明】上述代码中第1~4行为注释代码,第5行定义了一个名为HelloWorld的类,在第6~8行定义类的主方法,该方法于第7行实现打印字符串“HelloWorld!”。

具体的类介绍可以参考第7章,这里读者只需要理解该应用程序从一个类定义开始即可。

1.3.3 详解main()方法

使用Java语言编写的应用程序必须包含一个main()方法,它的格式如下所示:public static void main(String[] args)

修饰符public和static的顺序可以互换,但是根据Java惯例把public放在前面,参数名args不是固定的,开发者可以任意命名,但是习惯上选择使用args或argv。

main()方法是应用程序的入口,一个程序执行时会首先从类的main()方法开始,再启动程序所需要的其他资源。main()方法接收一个字符串数据参数,实际上该参数提供了运行时系统向应用程序提供参数的途径。当然也可以不传递任何参数。如果一个应用程序可以读取一系列文件,则需要把这些文件的绝对路径告诉该程序。该参数是命令行参数,即在调用java ClassName时使用,方式为java ClassName args。

笔者在编译HelloWorld程序时没有输入参数,该应用程序忽视了该参数。但是读者一定要注意确实存在这样的参数,也允许调用这样的参数为应用程序所用。1.4 常见疑难解答

对于初学者而言,在Java程序的开发、编译和执行过程中,都会或多或少遇到问题,如环境变量设置不正确,源程序的语法错误、语义错误,或在程序编译、运行期发生错误等。如果这些错误或问题不能得到适当的处理,那么会对初学者造成很大的障碍。本节将介绍几种常见的错误,以使读者在学习过程中少走弯路。

1.4.1 环境变量设置错误

在编译并运行Java应用程序之前,需要设置环境变量,其目的是使Windows系统可以知道DOS窗口中运行的Java工具可执行程序,如Javac源程序编译工具等。图1-12说明Windows操作系统无法发现Javac编译程序。

当然如果已经安装了JDK,则可以在DOS提示符下输入Javac的绝对路径,通过绝对路径来识别该命令的位置。如果采用JBuilder 9自带的JDK,那么目录为C:\JBuilder9\jdk1.5\bin。也可以在源文件的当前路径下输入“C:\JBuilder9\jdk1.5\bin\Javac HelloWorld.java”。显然这种方式很烦琐,因为每次编译源文件都要输入一串路径和命令信息。读者可以通过2.1节掌握如何设置JDK环境变量。

1.4.2 语法错误

Java语言规范设计了语法规则,但是如果疏漏了部分内容,违反了Java的语法规则,编译器会发出语法错误消息,该消息包含错误类型、发生错误的代码在程序中的位置(以该错误代码行号为标识)等,并且在错误处标识一个“^”。出现语法错误如图1-13所示。图1-12 无法找到Javac可执行程序图1-13 语法错误

在HelloWorld.java源程序中将语句System.out.println(“HelloWorld!”)后的分号去掉,使得程序语句缺少结束标志,这就违反了Java语法规则。在编译期发生任何类型的错误都会导致无法生成.class文件。所以此时需要读者仔细分析错误类型,细致检查程序中的错误,直到源程序顺利通过编译。

1.4.3 语义错误

编译器也会发现语义错误。编译器无法识别一个标识的语义,如发现一个未定义的变量、错误输入了系统类库的类名等。图1-14演示了一个语义错误,笔者故意将语句System的首字母改为小写,使编译器无法识别,从而输出语义错误。图1-14 语义错误

注意 Java程序区分大小写。

1.4.4 运行时错误

运行时错误指在执行程序过程中发生的错误,如某个类没有实例化而造成空指针、无法找到指定的类文件等。下面介绍三种初学者常见的运行时错误。

1.无法发现类文件

在用户编译或执行Java程序时,由于种种原因可能输入了不正确的类名,使得编译器或虚拟机无法发现该文件所在位置。类文件名输入错误如图1-15所示。图1-15 类文件名输入错误

在图1-15中,笔者想运行HelloWorld程序,但是输入了错误的类名HelloWorldd,所以执行系统抛出Java.lang.NoClassDefFoundError错误。

使用Java工具会启动Java虚拟机,此时系统会首先在当前目录下寻找类文件,如果没有则默认到操作系统的系统环境变量ClassPath中搜索,所以读者也可以在该变量中设置需要编译的类文件所在的目录。

注意 变量的设置方式可以参考2.1.2节设置ClassPath环境变量。

2.类名输入错误

对于初学者而言,很容易出现的一个错误是使用Java执行程序时,往往会输入类文件名如HelloWorld.class,这是不允许的,此时会抛出异常,类名输入错误如图1-16所示。图1-16 类名输入错误

注意 在调用Java工具执行程序时,需要在其后输入类名而不是类文件名,如输入Java HelloWorld才是正确的方式。

3.无法发现main()方法

在1.3节已经知道,任何Java应用程序执行的类中必须有main()方法,该方法是程序的入口,以后才可以继续调用程序所需的各种其他资源。如果在类中没有定义main()方法或该方法书写错误,都会导致如图1-17所示的缺少main()方法错误。图1-17 缺少main()方法错误

笔者在HelloWorld.java源程序中修改了main()方法的名字,继续编译并执行该程序,虚拟机将无法装载该类,因为无法发现类HelloWorld的程序入口。

1.4.5 初学者如何选择Java参考书

一个程序员如果没有半米多高的技术书堆,就没有人会认为他是真正的程序员。如何从眼花缭乱的开发丛书中找到适合自己的书,也是一门学问。

书评:比较成功的书籍在上市的前后,都会有名家撰写的书评,这些书评包括对该书积极一面的评价,也有对书中内容的指摘,通过正反两面的对照,相信可以帮助初学者做出购买的选择。

道听途说:口碑的重要性在现代社会中日益突出,如果真是一本好书,可能会在不同场合,听到不同的人对它给予相同的赞许,这就是该书的价值了。

不要忘记旧书摊:这不是在鼓励怀旧,而事实是老书的质量和作者的写书态度实在是严谨又端正得多,这就是老书的好处。对于多次印刷的书,也是值得考虑购买的对象,多版本说明作者对该书的精益求精和新技术的更新,同时也反映了该书在市场的受欢迎程度。

预先阅览:最好的当然是自己能够预先浏览,从朋友那里借也好,在网上看看电子版也好,觉得自己喜欢,或是觉得有收藏的价值,再进行购买。1.5 小结

相信本章的学习不会耗费初学者多少脑力,但是作为学习一门语言的起步阶段,读者仅仅是看到Java语言的冰山一角,所以希望读者在轻松理解本章内容后能建立学习Java语言的信心,并保持这样的状态继续下面章节的学习。

本章要求读者初步理解Java语言作为编程语言和作为软件平台的特性。对于1.3节深入探讨“HelloWorld”应用程序要用心体会,掌握一个应用程序的基本结构。因为本章还没有讲解环境配置等关键设置,所以并不建议读者动手学习,只需要了解Java程序从创建到执行的流程,以及Java程序中一些小的关键代码等即可。1.6 习题

一、填空题

1.Java虚拟机的英文全称是_______,简称是_______。

2.常见的Java注释格式有3种:_______、_______和_______。

3.使用Java语言编写的应用程序必须包含一个_______方法。

二、上机实践

1.创建一个名为WelcomeJava的类,在该类中输出“欢迎进入学习Java之门”的字符串,并对代码每一行进行注释。【提示】关键代码如下:public static void main(String[] args) {/* 从控制台输出信息 */System.out.println("欢迎进入学习Java之门");}

2.创建一个名为LoginOut的类,在该类中实现输出如图1-18所示的效果。【提示】关键代码如下: public static void main(String[] args) { /*从控制台输出信息*/ System.out.println("************************************\n"); System.out.println("1. 登录系统"); System.out.println("2. 退出\n"); System.out.println("************************************"); }图1-18 运行效果第2章 Java开发工具及环境设置

Java是很出色的面向对象高级语言,面向对象技术将在第7章介绍,这里只需要读者知道这个概念。正如C语言、C++语言、C#语言一样,任何高级语言都需要一个运行平台,即编写Java语言的计算机应用程序,需要一个编辑、编译和运行的环境,这里将详细介绍Java高级语言的开发工具及相应的环境设置。本章将讲述应用程序的一个开发流程,另外还要讲述开发Java程序所要使用的开发工具,最后会编写一个最简单的Java程序,并通过对程序的具体分析,使读者能够对编写Java代码有一个初步的认识。

本章重点:

·开发工具的下载和安装。

·JDK的组成和配置。

·编写并运行简单的Java程序。2.1 Java开发工具简介

Java语言是一种解释型的语言,即读一句程序执行一句,这样就需要一个解释器完成源程序到机器语言的翻译过程。同时Java是跨平台的语言,跨平台是指Java程序可以在安装任何操作系统的计算机上运行,其前提是需要安装Java虚拟机(JVM),而虚拟机和解释器都是JDK的一部分,JDK是Java开发工具集,它包含一套工具,如刚才讲的源程序解释器、JVM,还包括编译工具(Javac.exe)、执行程序(Java.exe)等。如果想让运行程序的计算机知道这些工具的位置,并找到这些工具,就需要下载、安装、配置并测试JDK工具。

2.1.1 下载并安装JDK

与Java相关的基础平台都是由Sun公司提供的,开发人员可以通过http://www.oracle.com/technetwork/java/index.html网站了解有关Java的最新技术,并可以下载相关的软件。Java网站的首页如图2-1所示。

注意 之所以是Oracle公司网站,而不是Sun公司网站,是因为在2009年8月21日Oracle公司收购了Sun公司。

本书中的代码采用JDK 7.0版本进行开发,因此在Java网站的首页右侧,单击“Java SE 7”链接,进入关于Java SE 7的下载界面,如图2-2所示。图2-1 Java网站的首页图2-2 Java SE 7的下载界面

在Java SE 7的下载界面中,单击“JDK Platform(JDK)7”上面的图片按钮,即可进入JDK 7.0的下载界面,如图2-3所示。在JDK 7.0的下载界面中,首先选择“Accept License Agreement”单选按钮,本书采用Windows 32位平台,因此选择“jdk-7-windows-i586.exe”,如图2-4所示。在该界面中,单击“jdk-7-windows-i586.exe”链接,即可下载JDK,如图2-5所示。图2-3 JDK 7.0的下载界面图2-4 页面根据前面的选择内容跳转到要下载的界面

下载到本地的JDK大约为120MB。下载完就可以进行安装,具体安装步骤如下:

1)双击执行jdk-7-windows-i586.exe安装程序,便可自动解压缩进行安装。首先出现的是安装程序准备界面,如图2-6所示。图2-5 下载JDK图2-6 安装程序准备界面

2)单击“下一步”按钮,准备过程完成后,安装程序会自动打开“自定义安装”界面,在该界面中单击“更改”按钮,就会出现“更改文件夹”界面,如图2-7所示。

3)选择好相应的路径(如D:\Java\jdk1.7.0),单击“确定”按钮,配置好的“自定义安装”界面如图2-8所示。图2-7 “更改文件夹”界面图2-8 “自定义安装”界面

4)然后单击“下一步”按钮,JDK即可开始安装。JDK安装完毕后,系统会打开JRE自定义安装界面,在该对话框中同样也可以进行路径的修改,如图2-9所示。

5)默认JRE的安装路径,也可以将安装路径改为D:\Java\jre7,然后单击“下一步”按钮,即可完成安装。JDK安装完成的界面如图2-10所示。图2-9 JRE自定义安装界面图2-10 JDK安装完成的界面

2.1.2 设定环境变量

JDK安装完毕后,还不能马上使用。如果想使用JDK实现编译运行Java文件等操作,还需要设定系统的环境变量Path与ClassPath,操作步骤如下:

1)在Windows桌面中,用右键单击“我的电脑”图标,弹出快捷菜单。

2)在弹出的快捷菜单中选择“属性”,弹出“系统属性”对话框。

3)在“系统属性”对话框中,选择“高级”标签下的“环境变量”按钮,弹出“环境变量”对话框,如图2-11所示。

4)单击“系统变量”区域中的“编辑”按钮,在弹出的“编辑系统变量”对话框中,设定系统变量名为Path,变量值为D:\Java\jdk1.7.0\bin,如图2-12所示。

5)单击“系统变量”区域中的“新建”按钮,在弹出的“新建系统变量”对话框中,设定变量名为ClassPath,变量值为D:\Java\jdk1.7.0\lib\dt.jar;D:\Java\jdk1.7.0\lib\tools.jar,如图2-13所示。

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载