Java语言程序设计
上QQ阅读APP看书,第一时间看更新

1.1 “初识Java—Hello World”实例

【实例目的】

(1)掌握Java语言的分类。

(2)掌握Java程序的分类。

(3)掌握Java程序的开发过程。

【实例内容】

通过Java语言编写一个控制台程序,通过Java编译器进行编译,在控制台输出“Hello World”。

【技术要点】

创建一个名为“HelloWorld.java”的应用程序,需要使用JDK中的Java编译器对其进行编译。为了使读者更清楚地了解程序的执行过程,在控制台界面下进行编译和运行。具体步骤如下:

1)在文本文件中编辑完成Java源程序

(1)在C盘新建java目录,在该目录下新建文件名为HelloWorld的文本文件。

(2)在文本文件中输入程序代码,如图1.1所示。

图1.1 在文本文件中输入代码

(3)代码输入完成后,先进行保存,然后将文本文件的扩展名由.txt改为.java。

2)编译Java程序

(1)单击“开始”按钮,在搜索框中输入cmd命令,按【Enter】键打开控制台(见图1.2);

(2)用cd命令进入到Java源代码所在的目录;

(3)输入javac HelloWorld.java,然后按【Enter】键,如果程序编译成功,则在文件夹下生成一个HelloWorld.class的字节码文件(见图1.3)。

(4)在控制台下接着输入javac HelloWorld,按【Enter】键运行,控制台上输出程序的结果,显示Hello World字符串。

图1.2 编译Java程序

图1.3 Java编译的字节码文件

【相关知识及注意事项】

1.1.1 Java语言的发展历程

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即Java SE、Java EE、Java ME)的总称。

Java语言的前身是Oak语言,是Sun公司在1991年由一个叫Green的项目组专门为家用消费电子产品开发的一个分布式代码系统,主要用来与家电产品如电视机、冰箱、空调等进行信息交互和控制。由于商业原因,Oak语言一直没有被推广出去。

1994年,随着互联网的快速发展,Sun公司的Bill Joe参加Green小组,决定将Oak语言应用于互联网的万维网的开发中,并编制了HotJava浏览器。通过HotJava浏览器在互联网上的应用,充分展现了Oak语言的网络方向的特点。同时Bill Joe决定通过互联网让世界上无数的软件开发人员免费使用Oak语言,更加推动了Oak语言的发展。

1995年,Sun公司将Oak语言正式命名为Java,同时召开了Java语言的发布会,推出Java和HotJava的最初版本。

1998年,Sun公司发布Java2企业平台J2EE。

1999年,Sun公司发布了Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)。

2000年,Sun公司发布了JDK1.4。

2005年,在JavaOne大会,Sun公司发布了Java SE6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。

2009年,Oracle公司以74亿美元收购Sun公司,取得Java的版权。

2011年,Oracle公司发布了Java7的正式版。

2014年,Oracle公司发布了Java8正式版。

Java平台由Java虚拟机和Java应用编程接口构成。Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台几乎已经嵌入了所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。

Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

1.1.2 Java语言的特点

Java语言是当前最流行的网络编程语言,和C++语言相比,有着特殊的优点,如简单性、平台无关性、面向对象、分布式、安全性、支持多线程、健壮性、动态性等。

1.简单性

与C++相比,Java不再支持运算符重载、多级继承及广泛的自动强制等易混淆和极少使用的特性,而增加了内存空间自动垃圾收集的功能,复杂性的省略和实用功能的增加使得程序开发变得既简单又可靠。

2.平台无关性

平台无关性是Java最吸引人的地方。Java是一种网络语言,而网络上充满了各种不同类型的机器和操作系统。Java采用了解释执行而不是编译执行的运行环境,首先编译成字节码,然后装载与校验,再解释成不同的机器码来执行,即“Java虚拟机”的思想,屏蔽了具体的平台环境的要求。

3.面向对象

面向对象的技术具有继承性、封装性和多态性等多种优点,Java在保留这些优点的基础上,又具有动态编程的特性,更能发挥出面向对象的优势。

4.分布式

Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接收信息的方法。Java应用程序使用URL对象访问网络资源,这使得程序员使用网络上的文件就像使用本地文件一样容易。

5.安全性

作为网络语言,Java有建立在公共密钥技术基础上的确认技术,提供了足够的安全保障。Java在运行应用程序时严格检查其访问数据的权限,如不允许网络上的应用程序修改本地的数据。同时,Java程序运行稳定,轻易不会出现死机现象。

6.支持多线程

多线程机制使应用程序能同时进行不同的操作,处理不同的事件。Java有一套成熟的同步语言,保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程来完成特定的行为。

7.健壮性

健壮性反映程序的可靠性。Java的几个内置的特性使程序的可靠性得到改进:

(1)Java是强类型语言。编译器和类载入器保证所有方法调用的正确性,防止隐式类版本不兼容性。

(2)Java没有指针,不能引用内存指针,避免了内存或数组越界访问。

(3)Java进行自动内存回收,编程人员无法意外释放内存,不需要判断应该在何处释放内存。

(4)Java在编译和运行时,都要对可能出现的问题进行检查,以消除错误的产生。另外,在编译的时候还可揭示出可能出现但尚未被处理的异常,以防止系统的崩溃。

8.动态性

Java在类库中可以自由地加入新方法和实例变量,而不影响用户程序的执行;同时,Java通过接口来支持多重继承,使其具有更灵活的方式和扩展性。

Java语言除了具有上述主要特点外,还具有高性能、解释性和可移植性等特点。

1.1.3 Java程序的分类

根据程序结构和运行环境的不同,Java程序可以分为两类:Java应用程序(Java Application)和Java小应用程序(Java Applet)。Java应用程序以main()方法作为程序入口,由Java解释器加载执行。Java应用程序是完整的程序,能够独立运行,而Java Applet小应用程序不使用main()方法作为程序入口,需要嵌入到HTML网页中运行,由appletviewer或其他支持Java的浏览器加载执行,不能独立运行。无论哪种Java源程序,都用扩展名为“.java”的文件保存。

1.Java Application程序

Java Application程序是可独立运行的JVM程序,它由一个或多个类组成,其中必须有一个类中定义了main()方法,main()方法就像C语言的main()方法一样,是Java Application程序运行的入口。

编写和运行Java Application程序,则需要按下列步骤进行:

(1)首先创建一个Java Application源程序(.java文件)

创建一个名为HelloWorldApp.java的文件,可在任何字符编辑器上输入并保存下列Java源程序代码:

其实质是创建一个名为HelloWorldApp的类,并把它保存为与它相同名字的文件HelloWorldApp.java。

一个Java源程序是由若干个类组成的,本程序中的Java应用程序只有一个类。class是Java的关键字,用来定义类。public也是关键字,用来声明一个类是公共类。

源文件的命名规则如下:如果一个Java源程序中有多个类,那么只能有一个类是public类;如果有一个类是public类,那么Java源程序的名字必须与这个类的名字完全相同,扩展名是“.java”;如果源文件中没有public类,那么源文件的名字只要和某个类的名字相同,而且扩展名是“.java”就可以了。

应用程序的入口是main()方法,它有固定的书写方式为:

main()方法之后的两个花括号及花括号内的内容叫作方法体。一个Java应用程序必须有且仅有一个类含有main()方法,这个类称为应用程序的主类。public、static和void用于对main()方法进行声明。在一个Java应用程序中,main()方法必须被声明为public、static和void,public声明main()是公有的方法,static声明main()是一个类方法,可以通过类名直接调用,而void则表示main()方法没有返回值。

在定义main()方法时,String args[]用来声明一个字符串类型的数组args,它是main()方法的参数,用来接收程序运行时所需要的参数。

上例中的main()方法中只有一条语句:

System.out.println("Hello Java!");  //在控制台上输出字符串"Hello Java!"

这条语句是把字符串"Hello Java!"输出到系统的标准输出上,例如系统屏幕。其中,System是系统类,out是java.io.PrintStream类的对象,是System类中的一个静态属性,表示“标准输出”,println是out对象的一个方法,其作用是在系统标准输出上显示形参里指定格式的字符串,并回车换行。“//”代表注释,用来说明这一条语句的功能,注释主要用来提高程序的可读性,不会参与程序的编译。

(2)第二步是对己创建好的Java源程序进行编译

该步骤是用Java编译器对Java源程序(.java)进行编译,生成对应的字节码文件(.class)。如果编译成功,会产生一个有相同文件名的带.class扩展名的字节码文件。

其命令格式如下:

javac HelloWorldApp.java

如果编译中不出现错误,将会得到一个名为HelloWorldApp.class文件。编译选项使用默认方式。

(3)最后解释执行已编译成功的字节码文件(.class文件)

用Java解释器对Java字节码文件(.class文件)解释执行。

在上例得到的HelloWorldApp.class文件,现在可以用Java解释器执行。

java HelloWorldApp

运行的结果,将会在标准输出设备上输出:

Hello Java!

Java解释器在解释执行时,解释处理的是类名,而不是文件名,所以在解释器Java后面跟随的是类名,而不能写成文件名的形式(HelloWorldApp.class)。其选项也使用默认方式。

2.Java Applet程序

一个Java Applet也是由若干个类组成的,一个Java Applet不再需要main()方法,但必须有且仅有一个类扩展了Applet类,即它是Applet类的子类,这个类称为Java Applet的主类,Java Applet的主类必须是public的,Applet类是系统提供的类。

Applet与Application的区别在于其执行方式不同。Application是从main()方法开始运行的,而Applet是在浏览器中运行的,必须创建一个HTML文件,通过编写HTML代码告诉浏览器载入何种Applet以及如何运行。

开发Java Applet程序的步骤如下:

(1)编写Applet源程序,将其保存为“.java”文件。

(2)编译源程序,生成字节码文件“.class”。如果源文件包含了多个类,则会生成多个扩展名为“.class”的文件,都和源文件存放在相同的目录下。如果对源文件进行了修改,那么必须重新进行编译,再生成新的字节码文件。

(3)编写一个HTML文件,即含有Applet标记的Web页,嵌入Applet字节码文件“*.class”。

(4)运行Java小应用程序。

例如:

①以文件名“HelloWorldApplet.java”保存Java Applet源程序。

②嵌入字节码文件的HTML文件“HelloWorldApplet.html”。

③使用JDK编译Java小应用程序。

javac HelloWorldApplet.java

④使用JDK提供的appletviewer运行。

appletviewer HelloWorldApplet.html

Java Applet程序必须创建一个Applet或JApplet的子类。Applet程序中不需要有main()方法。

1.1.4 Java程序的开发过程

Java语言包括3种核心机制:Java虚拟机、垃圾收集机制和代码安全检测。Java程序的开发过程大致分为3个阶段:

(1)编写Java源文件。将编辑好的源程序以扩展名“.java”保存起来,即保存成“*.java”文件。

(2)编译Java源程序。使用Java编译器编译“*.java”源程序,从而得到字节码文件“*.class”。

(3)运行Java程序。

Java程序的开发流程简单示意图如图1.4所示。

从图1.4中可以看出,一个源文件首先应保存为扩展名为“.java”的文件,通过编译器产生字节码文件。

图1.4 Java程序的开发流程

如果编写的是小应用程序(Java Applet),可以直接由浏览器解释运行,对于Java、应用程序就会由Java解释器来执行。在本书中,只有在后面才会接触到小应用程序,前半部分还是以Java应用程序为主,也就是说我们使用的是Java解释器。