简单的Java应用程序
下面编写一个简单的Java应用程序:求圆面积,以便对Java编程语言有一个初步的认识。
解决求圆面积问题的基本思路:定义一个名为Area的类,在这个类中定义一个名为calculateArea的方法;另外,再定义一个名为TestArea的类,在这个类中定义一个main()方法,作为整个应用程序的入口点,并在该方法中对求圆面积进行测试。
Area类的代码,如下所示:
package com.csmz.niit;
import java.lang.*;
/* 求圆的面积
* author: XXX
* date: 2010-12-08
*/
public class Area {
// 构造函数
public Area () {
}
// 定义方法
public void calculateArea(double r) {
final double PI = 3.14; // 定义常量
double area; // 定义变量
area = PI * r * r; // 求圆的面积
System.out.println("圆的面积 = " + area); // 在屏幕上显示结果
}
}
TestArea类的代码,如下所示:
package com.csmz.niit;
import java.lang.*;
public class TestArea {
public static void main(String [] args) {
Area a = new Area();
a.calculateArea(10);
}
}
1. Java源文件结构
一个Java应用程序可以包含一个或多个Java源文件,每个Java源文件只能包含下列内容(空格和注释除外):
Ø 零个或一个包声明语句
Ø 零个或多个包引入语句
Ø 零个或多个类的声明
Ø 零个或多个接口的声明
对于Java源文件结构,需要特别注意以下几点:
1 在一个Java源文件中可以包含多个类或多个接口的定义,但最多只能有一个类或者接口是public类型的,其它的类或者接口应该是非public类型的。
2 Java源文件必须以其中public类型的类的名字或者接口的名字命名。
例如:Area类的Java源文件的名字应该是Area.java;TestArea类的Java源文件的名字应该是TestArea.java。
2. 包声明语句 (package)
包声明语句用于把Java类放到特定的包中。
例如:我们把Area类放在com.csmz.niit包中。
package com.csmz.niit;
public class Area { }
把TestArea类也放在com.csmz.niit包中。
package com.csmz.niit;
public class TestArea { }
把Java类放到特定的包中,有两大作用:
Ø 能够区分名字相同的类,避免命名冲突。
Ø 有助于划分和组织Java应用程序中的各个类。
对于包声明语句,需要特别注意以下几点:
1 在一个Java源文件中,最多只能有一个package语句,但package语句不是必需的。如果没有提供package语句,就表明Java类位于默认包(default package)中,默认包没有名字。
2 package语句必须位于Java源文件的第一行(忽略注释行)。
例如:
合法的包声明语句:
package com.csmz.niit;
public class Area { }
非法的包声明语句:
public class Area { }
package com.csmz.niit;
特别注意:在JDK1.3以后的版本中,在带有包名的类中无法访问到默认包中的类,因此,我们一般都将类定义在某个包中。
JDK提供的Java基本包
JDK提供了一些Java基本包,如下表所示:
包 名
说 明
java.lang包
Java基础语言包,包含线程类(Thread)、异常类(Exception)、系统类(System)、整数类(Integer)和字符串类(String)等,这些类是编写Java程序经常用到的。
这个包是Java虚拟机自动引入的包,也就是说,即使程序中没有提供“import java.lang.*”语句,这个包也会被自动引入。
包
输入/输出包,包含各种输入流类和输出流类,如文件输入流类(FileInputStream类)和文件输出流类(FileOutputStream类)等。
java.util包
实用工具包,提供一些实用类,如日期类(Date)和集合类(Collection)等。
java.awt包
抽象窗口工具包,提供了一些类,用于进行GUI编程。
javax.swing包
提供了一些类,用于进行GUI编程。
包
网络工具包,提供了一些类,用于进行网络编程。
java.rmi包
提供了一些类,用于进行网络编程。
java.sql包
数据库工具包,提供了一些类,用于进行数据库编程。
javax.sound包
声音工具包,提供一些类,用于编写声音程序。
注意:JDK自带的所有包中的类构成了Java类库,用户创建的Java应用程序都依赖于Java类库。
3. 包引入语句 (import)
如果一个类访问了来自另一个包 (java.lang包除外) 中的类,那么前者必须通过import语句把这个类引入。
例如:假设Area类和TestArea类分别位于不同的包中,其中Area类位于com.csmz.rjxy包中,而TestArea类位于com.csmz.niit包中。由于TestArea类的main()方法会访问Area类,因此,TestArea类需要通过import语句引入Area类:
import com.csmz.rjxy.Area;
以上代码指明引入com.csmz.rjxy包中的Area类。以下代码则表明引入com.csmz.rjxy包中所有的类:
import com.csmz.rjxy.*;
如果程序仅需要访问com.csmz.rjxy包中的Area类,那么以上两条import语句都能完成相同的功能,但是第一条import语句的性能更优,因为第二条import语句会搜索com.csmz.rjxy包中所有的类。
对于包引入语句,需要特别注意以下几点:
1 尽管包名中的符号“.”能够体现各个包之间的层次结构,但是每个包都是独立的,顶层包不会包含子包中的类。
例如:
以下import语句引入com.csmz包中的所有类,但不会把com.csmz.niit包中的所有类引入。
import com.csmz.*;
如果你希望同时引入这两个包中的类,必须采用以下方式:
import com.csmz.*;
import com.csmz.niit.*;
2 package语句和import语句的顺序是固定的,在Java源文件中,package语句必须位于第一行 (忽略注释行),其次是import语句,接着是类或接口的声明。
合法的代码:
package com.csmz.niit;
import java.lang.*;
public class Area { }
合法的代码:
// 这是一行注释
package com.csmz.niit;
import java.lang.*;
public class Area { }
4. main( )方法的声明
main()方法是Java应用程序的入口点,每个Java应用程序都是从main()方法开始运行的。
作为整个应用程序入口点的main()方法必须同时符合以下4个条件:
1 访问修饰符: public
2 静态方法: static
3 参数限制: main(String [] args)
4 返回类型: void
一般来说,将包含程序入口点main()方法的类,称之为主程序类。
例如:TestArea类就是一个主程序类。
5. 注释语句
在Java源文件的任意位置,都可以加入注释语句,Java编译器会忽略程序中的注释语句。
Java语言提供了2种形式的注释:
1 单行注释:例如
// 求圆的面积
2 多行注释:例如
/* 求圆的面积
author: XXX
date: 2010-12-08
*/
6. 命名规则
在Java源文件中,包、类、接口、方法或变量的名字,必须符合以下命名规则:
(注意:包名、类名、接口名、方法名或变量名一般称作标识符)
1 标识符的首字符必须是字母、下划线“_”或美元符号“$”。
2 标识符由数字(0~9)、大写字母(A~Z)、小写字母(a~z)、下划线“_”、美元符号“$”等组成。
3 不能把关键字或保留字作为标识符。
4 标识符没有长度的限制。
5 标识符是严格区分大小写的。
注意:含有 “$”符号的标识符并不常用,除非有特定需要,否则标识符内避免使用 “$” 符号。
下表列举了一些合法标识符和非法标识符,如果程序中包含非法标识符,会导致编译错误。
标识符正误对照表
合法标识符
非法标识符
说 明
GROUP_7
7GROUP
标识符不能以数字开头
Try
Try#
标识符中不能包含“#”
$a123
$a 123
标识符中不能包含空格
openDoor
open-door
标识符中不能包含“-”
boolean1
boolean
boolean是关键字,不能用关键字做标识符。
7. 编程规范
Java编程规范的主要内容,如下所示:
1 类名和接口名:首字母大写。如果类名由几个单词构成,那么每个单词的首字母大写,其余字母小写,例如:TestArea类。
2 方法名和变量名:首字母小写。如果方法名或变量名由几个单词构成,那么除了第一个单词外,其余每个单词的首字母大写,其余字母小写,例如:calculateArea()方法。
3 包名:采用小写形式。例如:com.csmz.niit。一般来说,包名采用URL(网址)的反写形式。
3 常量名:采用大写形式。如果常量名由几个单词构成,银屑病症状http://pf.单词之间以下划线“_”隔开,利用下划线可以清晰地分开每个大写的单词。例如:
final double PI = 3.14;
final String DEFAULT_COLOR_OF_CAR = “Red”;
注意:标识符的命名规则是必须遵守的,否则会导致编译错误。而编程规范是推荐遵守的编程习惯,即使不遵守以上编程规范,也不会导致编译错误。