会员登陆  支付方式  联系我们  在线客服  网站地图       
首页 关于域浪 互联网数据中心业务、主机托管、主机租用、机架租用、带宽租用、机房介绍、机房对比、CCN网络加速 adsl专线、深圳adsl专线 虚拟主机、域名注册、数据库、企业邮局、动态域名 网络安全、网络临近平台、安全服务、防火去墙租用、安全产品、域浪抗DDOS防火墙、NetScreen防火墙 技术支持  
   当前位置:首页 >> 技术支持 >> JSP编程技巧 >> java源程序结构
 
精华文章
    串行化的注意事项  
    串行化方法  
    Reader和Writer  
    随机访问文件  
    文件描述  
    InputStream 和Output...  
    I/O流的层次  
    声明抛弃例外  
    捕获例外  
    例外处理机制  
    JSP例外  
    简单数据类型  
    数据类型概述  
    java注释  
    java编程规范  
    java源程序结构  
    构建java程序  
    java虚拟机  
    Java编程基础  
    基于JSP技术的数据库连...  
    JSP中的注释  
    jsp入门学习教程  
    Jsp开发环境配置全过程...  
    JSP语法大全  
    JSP教程(七)-pluginAc...  
    JSP教程(六)-怎么在JS...  
    JSP教程(五)-JSP Acti...  
    JSP教程(四)-JSP Acti...  
  更多>>  
   JSP编程技巧
 java源程序结构
  一个完整的java源程序应该包括下列部分:

  package语句; //该部分至多只有一句,必须放在源程序的第一句

  import语句; /*该部分可以有若干import语句或者没有,必须放在所有的

          类定义之前*/

  public classDefinition; //公共类定义部分,至多只有一个公共类的定义

       //java语言规定该java源程序的文件名必须与该公共类名完全一致

  classDefinition; //类定义部分,可以有0个或者多个类定义

  interfaceDefinition; //接口定义部分,可以有0个或者多个接口定义



  例如一个java源程序可以是如下结构,该源程序命名为HelloWorldApp.java:

   package javawork.helloworld; /*把编译生成的所有.class文件放到包

                   javawork.helloworld中*/

   import java.awt.*;  //告诉编译器本程序中用到系统的AWT包

   import javawork.newcentury; /*告诉编译器本程序中用到用户自定义

                  的包javawork.newcentury*/

   public class HelloWorldApp{......} /*公共类HelloWorldApp的定义,

                      名字与文件名相同*/

   class TheFirstClass{......} //第一个普通类TheFirstClass的定义

   class TheSecondClass{......} //第二个普通类TheSecondClass的定义

              ...... //其它普通类的定义

   interface TheFirstInterface{......} /*第一个接口

                      TheFirstInterface的定义*/

                 ...... //其它接口定义



  package语句:由于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语句相当于没起作用。



  但是,如果程序中包含了package语句,则在运行时就必须包含包名。例如,HelloWorldApp.java程序的第一行语句是:package p1.p2;编译的时候在命令行下输入"javac -d path HelloWorldApp.java",则HelloWorldApp.class将放在目录path\p1\p2的下面,这时候运行该程序时有两种方式:

  第一种:在命令行下的path目录下输入字符"java p1.p2.HelloWorldApp"。

  第二种:在环境变量classpath中加入目录path,则运行时在任何目录下输入"java p1.p2.HelloWorldApp"即可。



  import语句:如果在源程序中用到了除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这个类,最后就找到了。如果要从一个包中引入多个类则在包名后加上".*"表示。



  如果程序中用到了用户自己定义的包中的类,假如在上面程序中要用到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就可以找到。



  源文件的命名规则:如果在源程序中包含有公共类的定义,则该源文件名必须与该公共类的名字完全一致,字母的大小写都必须一样。这是java语言的一个严格的规定,如果不遵守,在编译时就会出错。因此,在一个java源程序中至多只能有一个公共类的定义。如果源程序中不包含公共类的定义,则该文件名可以任意取名。如果在一个源程序中有多个类定义,则在编译时将为每个类生成一个.class文件。

  • 上一篇文章: java编程规范
  • 下一篇文章: 构建java程序
  • 域浪网络ISP经营许可证 深圳地址:深圳市罗湖区宝安北路国际商品交易大厦七楼C30室
    Tel:0755-82266883/82267566 Fax:0755-82261966
    邮编:518000 
                        Copyright © 2006-2008 elang.cn All Rights Reserved 深圳市域浪网络技术有限公司版权所有