📄 right1_5_1.htm
字号:
<html><head><title>right</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><link rel="stylesheet" href="../../../css/text.css" type="text/css"></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" ><table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td valign="top" height="245"> <table width="95%" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#FFFFFF"> <tr> <td height="244" valign="top"> <p class="pt9-black"><br> 一个完整的java源程序应该包括下列部分:<br> package语句;<font color="#339900"> //该部分至多只有一句,必须放在源程序的第一句</font><br> import语句; <font color="#339900">/*该部分可以有若干import语句或者没有,必须放在所有的<br> 类定义之前*/</font><br> public classDefinition; <font color="#339900">//公共类定义部分,至多只有一个公共类的定义</font><br> <font color="#339900">//java语言规定该java源程序的文件名必须与该公共类名完全一致</font><br> classDefinition; <font color="#339900">//类定义部分,可以有0个或者多个类定义</font><br> interfaceDefinition; <font color="#339900">//接口定义部分,可以有0个或者多个接口定义</font></p> <p><span class="pt9-black"> 例如一个java源程序可以是如下结构,该源程序命名为HelloWorldApp.java:<br> package javawork.helloworld; <font color="#339900">/*把编译生成的所有.class文件放到包<br> javawork.helloworld中*/</font><br> import java.awt.*; <font color="#339900">//告诉编译器本程序中用到系统的AWT包</font><br> import javawork.newcentury; <font color="#339900">/*告诉编译器本程序中用到用户自定义<br> 的包javawork.newcentury*/</font><br> public class HelloWorldApp{......} <font color="#339900">/*公共类HelloWorldApp的定义,<br> 名字与文件名相同*/</font><br> class TheFirstClass{......}<font color="#339900"> //第一个普通类TheFirstClass的定义</font><br> class TheSecondClass{......} <font color="#339900">//第二个普通类TheSecondClass的定义</font><br> ...... <font color="#339900">//其它普通类的定义</font><br> interface TheFirstInterface{......} <font color="#339900">/*第一个接口<br> TheFirstInterface的定义*/</font><br> ...... <font color="#339900">//其它接口定义</font><br> <br> </span><span class="zhongdian">package语句:</span><a name="01"></a><span class="pt9-black">由于java编译器为每个类生成一个字节码文件,且文件名与类名相同,因此同名的类有可能发生冲突。为了解决这一问题,java提供包来管理类名空间,包实际提供了一种命名机制和可见性限制机制。而在java的系统类库中,把功能相似的类放到一个包(package)中,例如所有的图形界面的类都放在java.awt这个包中,与网络功能有关的类都放到java.net这个包中。用户自己编写的类(指.class文件)也应该按照功能放在由程序员自己命名的相应的包中,例如上例中的javawork.helloworld就是一个包。包在实际的实现过程中是与文件系统相对应的,例如javawork.helloworld所对应的目录是path\javawork\helloworld,而path是在编译该源程序时指定的。比如在命令行中编译上述HelloWorldApp.java文件时,可以在命令行中敲入"javac -d f:\javaproject HelloWorldApp.java",则编译生成的HelloWorldApp.class文件将放在目录f:\javaproject\javawork\helloworld\目录下面,此时f:\javaprojcet相当于path。但是如果在编译时不指定path,则生成的.class文件将放在编译时命令行所在的当前目录下面。比如在命令行目录f:\javaproject下敲入编译命令"javac HelloWorldApp.java",则生成的HelloWorldApp.class文件将放在目录f:\javaproject下面,此时的package语句相当于没起作用。<br> <br> 但是,如果程序中包含了package语句,则在运行时就必须包含包名。例如,HelloWorldApp.java程序的第一行语句是:package p1.p2;编译的时候在命令行下输入"javac -d path HelloWorldApp.java",则HelloWorldApp.class将放在目录path\p1\p2的下面,这时候运行该程序时有两种方式:<br> 第一种:在命令行下的path目录下输入字符"java p1.p2.HelloWorldApp"。<br> 第二种:在环境变量classpath中加入目录path,则运行时在任何目录下输入"java p1.p2.HelloWorldApp"即可。<br> <br> </span><span class="zhongdian">import语句:</span><a name="02"></a><span class="pt9-black">如果在源程序中用到了除java.lang这个包以外的类,无论是系统的类还是自己定义的包中的类,都必须用import语句标识,以通知编译器在编译时找到相应的类文件。例如上例中的java.awt是系统的包,而javawork.newcentury是用户自定义的包。比如程序中用到了类Button,而Button是属于包java.awt的,在编译时编译器将从目录classpath\java\awt中去寻找类Button,classpath是事先设定的环境变量,比如可以设为:classpath=.;d:\jdk1.3\lib\。 classpath也可以称为类路径,需要提醒大家注意的是,在classpath中往往包含多个路径,用分号隔开。例如classpath=.;d:\jdk1.3\lib\中的第一个分号之前的路径是一个点,表示当前目录,分号后面的路径是d:\jdk1.3\lib\,表示系统的标准类库目录。在编译过程中寻找类时,先从环境变量classpath的第一个目录开始往下找,比如先从当前目录往下找java.awt中的类Button时,编译器找不着,然后从环境变量classpath的第二个目录开始往下找,就是从系统的标准类库目录d:\jdk1.3\lib开始往下找java.awt的Button这个类,最后就找到了。如果要从一个包中引入多个类则在包名后加上".*"表示。<br> <br> 如果程序中用到了用户自己定义的包中的类,假如在上面程序中要用到javawork.newcentury包中的类HelloWorldApp,而包javawork.newcentury所对应的目录是f:\javaproject\javawork\newcentury,classpath仍旧是classpath=.;d:\jdk1.3\lib\,则编译器在编译时将首先从当前目录寻找包javawork.newcentury,结果是没有找到;然后又从环境变量classpath的第二个目录d:\jdk1.3\lib\开始往下找,但是仍然没有找到。原因在于包javawork.newcentury是放在目录f:\javaproject下面。因此,需要重新设定环境变量classpath,设为classpath=.;d:\jdk1.3\lib\;f:\javaproject\ 。所以编译器从f:\javaproject开始找包javawork.newcentury就可以找到。<br> <br> </span><span class="zhongdian">源文件的命名规则:</span><a name="03"></a><span class="pt9-black">如果在源程序中包含有公共类的定义,则该源文件名必须与该公共类的名字完全一致,字母的大小写都必须一样。这是java语言的一个严格的规定,如果不遵守,在编译时就会出错。因此,在一个java源程序中至多只能有一个公共类的定义。如果源程序中不包含公共类的定义,则该文件名可以任意取名。如果在一个源程序中有多个类定义,则在编译时将为每个类生成一个.class文件。</span></p> </td> </tr> </table> </td> </tr></table></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -