技术开发 频道

ASP 开发人员的 J2EE 基础

  main() 方法

  作为应用程序从命令行运行的 Java 类必须定义一个 main() 方法才能运行。在 Java 代码中, main() 方法遵循严格的命名约定。采用下列方式声明 main() 方法:

1 public static void main(String[] args)

  注:您可以将 public 和 static 修饰符互换位置,可以将 String 数组命名为任何您希望的形式。但是,上述格式是约定俗成的。并非所有的类都需要 main() 方法 ―― 只有从命令行运行的那些类才需要该方法。典型的 Java 应用程序有一个类包含 main() 方法,而其他一些支持类都没有 main() 方法。

  包

  诸如 Java 语言之类的面向对象语言非常有利于类的重用。由于大多数程序员使用简单的描述性名称(如 Invoice 或 User )对其类进行命名,所以,当您从各种来源重用类时,名称冲突的可能性很高。Java 语言解决该问题的方法是,让每个类术语一个 包。您可以同时使用具有相同名称但属于不同包中的类。要将类与包关联起来,必须在类源代码的第一行代码进行包声明。请看下面的例子:

1  package com.ibm.training;
2

  按照约定,将反向的 Internet 域名(例如, com.yourco.somepackage )作为包名称的前缀。要使用不同包中的类,有两种选择。一种选择是使用类的完全限定名称,包括包。清单 6 展示了一个例子。

  清单 6. 使用全限定的类名

1 public class PackDemo1 {
2 public static void main(String[] args) {
3    Java.util.Date today = new java.util.Date();
4    System.out.println("The date is " +  today);
5 }
6

  另一种选择是在源文件中对在另一个包中的类使用 import 语句。这种情况就不再需要完全限定名,如清单 7 所示。

  清单 7. 使用 import 语句

1 import java.util.Date;
2 public class PackDemo1 {
3 public static void main(String[] args) {
4    Date today = new Date();
5    System.out.println("The date is " +  today);
6 }
7

  可以使用通配符导入包中的所有类。如果要使用同一包中的几个类,那么这种方法很有用,如清单 8 所示。

  清单 8. import 语句与通配符一起使用

1 import java.util.Date;
2 public class PackDemo1 {
3 public static void main(String[] args) {
4    Date today = new Date();
5    System.out.println("The date is " +  today);
6 }
7

  打包以供重用

  在 Visual Basic 中,可以编写代码并将其构建为一个动态链接库(DLL),在文件系统中,DLL 由扩展名为 .dll 的文件表示。其他程序可以引用 DLL 以使用 DLL 中包含的代码。Java 语言还允许将类的集合打包到称为 Java Archive (JAR) 的文件中,以供重用。您可以将类的集合合并到扩展名为 .jar 的文件中,并从其他类中引用 JAR 文件。具有 .jar 扩展名的文件是标准的 zip 文件,可以由 WinZip 或其他压缩实用程序来操作它们。不过,为方面起见,Java SDK 含了一个名为 jar.exe 的实用程序(在 Windows 平台上),可以使用它来把一组类合并到一个具有 .jar 扩展名的文件中。

  在考察使用 jar.exe 实用程序的例子之前,理解包名称和 Java 平台用于生成类以及在运行时加载它们的目录结构之间的关系是很重要的。请考虑一个名为 Test 的类,它的源代码在一个名为 Test.java 的文件中。如果将 Test.java 定义为 com.mycompany.test 包的一部分,那么编译器将为最终的 .class 模块创建一个目录树。该目录树就建立在包名称的基础上。本例中目录树为 com\mycompany\test,并且包名称中的点号被转换为目录边界。

  现在打开一个命令提示符窗口,然后创建一个目录(例如 c:\javapack)。切换到该目录( cd javapack )。使用您最喜欢的文本编辑器,将清单 9 中的代码添加到一个名为 Test.java 的新文件中。

  清单 9. 使用包的例子

1 package com.mycompany.test;
2 public class Test
3 {
4    public static void main(String[] args) {
5        System.out.println("In test");
6    }
7 }
8

  现在使用下面的命令编译 Test.java。( -d 选项应指向您为这个例子创建的目录):

1 java -d c:\javapack Test.java

  现在在 c:\javapack 目录下应该有一个名为 com 的子目录。事实上,您可以看到编译所产生的 comTest.class 文件的完全限定名称是 Test.class。注意包名称( com.mycompany.test )如何转换为对应目录结构(com\mycompany\test),该目录结构以您使用 -d 选项指定的目录作为根目录。

  下面我们将展示如何打包 Test.class 以方便其他类重用。从 c:\javapack 目录运行下列命令:

1 jar -cvf Test.jar com

  这个命令将创建一个名为 Test.jar 的文件,它包含 com 子目录下的所有类。

  运行下列命令来使用 Test.jar 文件中的类:

1 java -classpath Test.jar com.mycompany.test.Tes

 

  注意您必须使用全限定类名来从命令行运行该命令,而且还要注意使用 -classpath 选项来指向 Test.jar 文件这个方式。或者,您可以把 Test.jar 文件添加到 CLASSPATH 环境变量中,该变量是分号分隔的 JAR 文件和目录的列表,Java 编译器和 JVM 使用这些目录查找需要加载的类。

  其他区别

  我们已经了解了 Java 语言和 Visual Basic 的主要语法区别。其他一些区别是:

  全局变量:与 Visual Basic 不同,Java 语言不提供任何方法来声明全局变量(或方法)。

  GoTo :尽管 Java 语言将 goto 保留为一个关键字,但它没有与 Visual Basic 使用的类似的 GoTo 语句。

  自由放置变量:只要需要,您可以在任何地方声明 Java 变量。您不需要在程序块的顶部对变量分组,而在 Visual Basic 中必须这样。

  继承:Visual Basic 不允许定义扩展其他类功能的类。Java 语言允许定义继承除类的私有成员外的所有成员的类。这些新类可以扩展它们继承的类的行为并且替换被继承成员的行为。(在下一节将了解有关继承的更多信息。)

0
相关文章