
1.7 JDK环境下开发Java程序
1.7.1 Java Application的开发
Java源程序是以.java为扩展名,可以用各种Java集成开发环境中的源代码编辑器来编写,也可以用其他文本编辑工具如Windows中的记事本、JCreator等编辑Java源程序。
Java Application程序的开发可以分为以下三个步骤:
(1)编辑源程序
利用记事本等编辑工具完成源程序编辑,形成“主类名.java”的Java源文件。
(2)编译源程序
使用JDK的javac.exe命令将源文件编译生成字节码文件“主类名.class”。
(3)运行程序
对于Java Application,用JDK的java命令对字节码文件进行解释执行。
【例题1_1】第一个Java Application程序。
(1)打开记事本,在其中编辑如下程序:

(2)将以上程序保存为MyFirstApplication.java,保存时一定要在“另存为”对话框的“保存类型”列表框中选择“所有文件”选项,如图1.12所示,否则会默认保存为.txt文件。假定保存路径选择E:\Java Pro。

图1.12 保存Java源程序
(3)打开Windows命令提示符窗口,将路径转到当前保存源程序文件的E:\Java Pro下。在当前命令提示符下键入E:并回车,将根目录转到E:\目录下。
(4)用cd命令进入Java Pro子目录下(见图1.13),继而键入javac MyFristApplication.java并回车对源程序进行编译,编译过程中若有语法错误,则会报错。
(5)若没有语法错误,编译后在Java Pro子目录下会生成对应的字节码文件MyFirstApplication.class;再输入java MyFristApplication并回车来解释执行程序,得到正确的输出结果(见图1.14)。

图1.13 用javac命令编译Java源程序

图1.14 用java命令执行Java程序
程序说明:
·类是组成Java源程序的基本单位,一个Java源程序是由若干个类组成的。本例只有MyFirstApplication一个类。
·“public class MyFirstApplication”被称为Java类的声明部分,其中,public及class都是Java的关键字, public表明该类的访问权限为公有, class是定义类的关键字MyFirstApplication是类名标识符。
·第一个大括号和最后一个大括号以及它们之间的内容叫作类体。该类体中只包含一个public static void main(String[]args)方法。一个Java Application程序必须有且仅有一个类含有main方法,包含有main方法的类被称为应用程序的主类。在一个Java应用程序中main方法必须被声明为public static void修饰的。String args[]声明一个字符串类型的数组args[]用来存储来自于命令行的参数。
·public static void main(String[]args)方法是所有的Java Application程序执行的入口,当执行Java Application时,整个程序将从这个main方法的方法体的第一个语句开始执行。
·System.out.println(字符串)是Java向屏幕输出的基本方法。
·如果源程序文件中包含有多个类,那么只能有一个类前面可以加public修饰(一般是在主类前加public)。源程序文件以主类名.java保存。
如果在一个源程序中有多个类定义,则在编译时将为每个类生成一个.class文件。为了说明这一点,再举一个例子。
【例题1_2】定义一个学生类,在Example1_2类中创建学生类对象并调用其方法输出学生信息。

程序说明:
·对于本例中对象创建、成员变量、成员方法的定义等问题,在本章制作简单了解即可,不必深究。
·程序包含两个类,Example1_2以及Student类,其中Example1_2是主类,所以,保存该源程序文件时,应以Example1_2.Java的形式进行保存。
·在命令提示符窗口E:\Java Pro下键入javac Example1_2.java并回车,若没有语法错误,会在当前源程序目录下生成两个字节码文件Example1_2.class以及Student.class。
【例题1_3】先读入字符串“I am a student,I study hard.”,将其以

的形式显示在控制台。


程序运行结果如图1.15所示。

图1.15 Java Application的基本输入/输出
程序说明:
·本程序主要显示了Java Application基本输入的方法。
·该程序中的System.in代表标准输入流,可以从来自于标准输入设备键盘的数据。Scanner类是java.util系统类包中的类,在创建其对象时包装了System.in,从而可以使用Scanner类的nextLine()方法按行读取键盘的输入。
·要使用Java系统类包中的类时,要用import关键字将对应包导入进来,如import java.util.Scanner;,且该语句应放在本源程序所有类定义之前。
【例题1_4】编写程序实现通过命令行读入两个整数,求其和并将结果输出。

程序运行结果如图1.16所示。

图1.16 获取命令行参数并对其求和
程序说明:
·public static void main(String[]args)中的String[]args是一个String类型的一维数组,用于接收命令行参数。将这些参数对应存储在args[0],args[1],…,args[n]中。
·由于args[0],args[1],…,args[n]中的数据都是String类型,不能参与算数运算,因此用Integer.parseInt(args[0])等方法将对应的String类型数据转化为基本数据类型int型数据并进行算数运算。这些方法在后续章节中会陆续展开介绍,此处只做了解。
·在执行该程序时,应在主类名后给出命令行参数200,300,主类名与每个命令行参数之间有且仅有一个空格隔开。
【例题1_5】通过输入对话框接收数据并将其输出。

程序运行结果如图1.17(a)、(b)、(c)所示。

图1.17 Example1_5的运行结果
javax.swing包中的JOptionPane调用其静态方法showInputDialog()可以产生一个输入对话框,在其中输入字符串,单击“确定”按钮后,该方法返回该字符串。
例题1_3、例题1_4、例题1_5分别演示了Java Application程序接收数据的几种常用方法,要灵活应用。