java程序的组织结构
  TEZNKK3IfmPf 2023年11月12日 35 0

Java程序的组织结构

JAVA程序是由类和接口组成的。

一个简单的java程序,有一个类即可。

一个简单的类,可以仅包含一个入口方法public static void main(String[] args),如下:

public class类名{

  …

  publicstatic void main(String[] args){

  …

  }

}

一个比较完整java程序包括下列部分

 package语句;

 import语句;

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

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

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

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

 

一般地,具有相同功能的类放在一个package中。

一个java源程序至多只能有一个公共类(public类)的定义。

若java源程序有一个公共类的定义,则该源文件名字必须与该公共类的名字完全相同。

若源程序中不包含公共类的定义,则源该文件名可以任意取名。

若一个源程序中有多个类定义,则在编译时将为每个类生成一个.class文件(以类名为文件名,以.class作为扩展名,扩展名也称为后缀)。

java源文件又称为编译单元。一个java文件可以包含多个类,但至多包含一个公共类(public类),作为该java文件的公用接口,公共类的名字和源文件的名字要相同,但后缀为.java。

一个java文件中,在不同类中,是可以有多个public static voidmain(String[] args)

示例如下:

package lc01;
public class cs {
    cs(){
        System.out.println("你好啊! world!");
    }
    public static void main(String[] args) {
        new cs();
    }
}

class a{
    public static void main(String[] args){
    }
}

但是,对于一个Java程序而言,往往只需要一个入口,也就是只需要有一个类包含main方法,而其他类都是用于被main方法直接或间接调用的。

如果一个java源程序中含有public的类,则文件名必须与类名一致,如果没有public类,则文件可以随意命名。一个文件中,public的类可以有零个或一个,非public的类可以有零个或多个。

又,public static void main()不是必须要放在public类中,如

package lc01;
class Dog{ 
     Dog(){  
         System.out.println("I'm a dog.");  
     }  
     public static void main(String[] args){ 
         new Dog();  
         new Cat();  
     }  
}  

class Cat{ 
     Cat(){  
         System.out.println("I'm a cat.");  
     }  

文件中没有一个public类,程序也能正常运行。

Java包、公共类与Java源码文件的关系

包(package)是一个为了方便管理组织java文件的组织和管理方式。包内包含有一组类。可以使用import关键字来导入一个包。例如使用import java.util.*就可以导入java.util包里面的所有类。所谓导入这个包里面的所有类,就是在import声明这个包名以后,在接下来的程序中可以直接使用该包中的类。

一个Java源代码文件必须有一个后缀名.java,此文件通常被称为编译单元。在编译单元内有且仅有一个public类,否则编译器就不会接受。该public类的名称必须与文件的名称相同(包括大小写,但不包括后缀名.java)。

当编译一个.java文件(即一个编译单元)时,在.java文件中的每个类都会有一个输出文件,而该输出文件的名称与.java文件中每个类的名称相同,只是多了一个后缀名.class。因此在编译少量.java文件之后,会得到大量的.class文件。每个.java文件都是一个构件,如果希望许许多多的这样的构件从属于同一个群组,就可以在每一个.java文件中使用关键字package。而这个群组就是一个包。

 例如,假设文件的名称是Apple.java,这就意味着在该文件中有且仅有一个public类,该类的名称必须是Apple(注意大小写):

package fruit;

public class Apple

{

      //...

}

上面的代码已经将Apple类包含在了fruit包中,现在如果有人想使用Apple或者是fruit中的任何其他public类,就必须使用关键字import来使fruit中的名称可用。

import fruit.*;

public class ImportApple

{

     public static void main(String[] args)

      {

           Apple a=new Apple();

      }

或者使用带包名的限定名称:

public class QualifiedApple

{

     public static void main(String[] args)

      {

           fruit.Apple a=new fruit.Apple();

      }

}

显然使用关键字import使代码更加简洁。

一个项目(Project)可以有几个包,包是为了更好的规划整理你写的各个类,将相关的类放在一个包中。包是为了更好的规划整理你写的各个类。

包(package)的作用

1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

2 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。

3 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

java使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。

在Java源文件中,如果使用package语句,则package语句应作为第一条可执行语句(它的前面只能有注释或空行),指明该源文件定义的类所在的包。package语句的一般格式为:

package  包名;

包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成,包的名字有层次关系,各层之间以点分隔。包层次必须与Java开发系统的文件系统结构相同。例如 packageaaa.bb.image

则此文件必须存放在aaa\bb\image目录下 

如果源程序中省略了package语句,源文件中所定义命名的类被隐含地认为是无名包,即源文件中定义命名的类在同一个包中,但该包没有名字。

包(package)分为无名包和有名包,无名包的好处是无需对包作任何声明,可以拿来方便快捷使用,但也因为无名包没有名字,所以其它包无法用import语句导入访问无名包中的类,所以说无名包只适合在局部应用。而有名包就可以被其它包所访问,先用import语句导入,再用“包名.类名”方式访问指定包中指定的类。

 

使用命令行编译运行带包名和不带包名的Java源文件HelloWorld

1.不带包名的。

源码:

public class HelloWorld{

    public static void main(String args[]){

       System.out.println("helloworld");

    }

}

文件名字必须是:HelloWorld.java。我们使用命令行来编译运行。

java程序的组织结构

  1.  带包名的。

源码:

package net.csdn.blog;

public class HelloWorld{

    public static void main(String args[]){

       System.out.println("helloworld");

    }

}

具体步骤(我的是在D盘下):

1. 创建文件夹net,在文件夹下面再创建csdn,再创建文件夹blog,把HelloWorld.java放在blog下。

2. 命令行先编译HelloWorld.java。

3. 再运行命令java net/csdn/blog/HelloWorld。

java程序的组织结构

关于java项目程序目录结构的建议

建议将源码文件(即扩展名为.java的文件)和编译成字节代码文件(即扩展名为.class的文件)分开,如将源码文件放在scr目录中,将编译成字节代码放到classes目录中.

建议将使用包(package)的源码文件,放在和包层次相同的目录中,目的是把不同的 java 程序分类保存,但这不是必须的。

按照这些建议,层次分明,可以减少混乱,项目中文件越多就越能体现出其好处。

、有一个使用包的程序文件Something.java源码如下

package lee.java;

public class Something{

//主要执行区块

     public static void main(String[ ] args){

           //程序语句

           System.out.println("我的第一个Java程序");

     }

}

使用带 -d参数javac 编译成字节代码:

javac  -d D:\JavaTest2\classes  D:\JavaTest2\src\Something.java

现在,目录结构示意图如下:

java程序的组织结构

运行命令:

java -classpath D:\JavaTest2\classes lee.java.Something

java程序的组织结构

从Java 9版本中Java 语言引入了一个非常重要的概念:模块(module)。module引入了Java代码分组的另一个级别。每个module都包含许多子package(包)。

java程序的组织结构

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   18天前   41   0   0 java
  TEZNKK3IfmPf   2024年05月31日   21   0   0 public
  TEZNKK3IfmPf   2024年05月31日   52   0   0 java
TEZNKK3IfmPf