欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java基础知识总结二(2)

程序员文章站 2022-04-14 21:58:19
2、程序中包的使用 Java中包的作用是帮助我们管理和组织类,避免类名的冲突。关于包的使用主要内容是package语句和import语句。 (1)package语句 首先注意package语句必需写在.java文件的第一句,并且写在所有类的外面。 例如,将之前得HelloWorld类放入到 p.te ......

2、程序中包的使用

    Java中包的作用是帮助我们管理和组织类,避免类名的冲突。关于包的使用主要内容是package语句和import语句。

(1)package语句

   首先注意package语句必需写在.java文件的第一句,并且写在所有类的外面。

   例如,将之前得HelloWorld类放入到 p.test.practise包里面;

   代码如下:

   package p.test.practise;

   public class HelloWorld {
         public static void main(String args[]) {
              System.out.println("Hello World");
         }
   }

  然后,使用下面的编译命令进行编译,

      javac HelloWorld.java

  编译成功,在相应的文件夹目录下生成了HelloWorld.class文件,如下图所示

  Java基础知识总结二(2)

  然后,使用下面的命令运行HelloWorld.class文件

     java HelloWorld

  运行结果出现错误,如下图所示,

  Java基础知识总结二(2)

 原因在于将HelloWorld类放入了包里面。在将类放入包里面之后,必须使用类的全限定名运行HelloWorld.class文件,

 这里,全限定名的写法为包名加类名的写法

 所以,执行的命令应为,

   java p.test.practise.HelloWorld

 运行结果仍然出现错误,如下图所示,

 Java基础知识总结二(2)

  在这里,忘了最重要的一个知识点就是:类的包结构必须和文件夹的结构一样;

  所以,应该将HelloWorld.class文件放到 E:\exam文件夹里面的p文件夹里面的test文件夹里面的practise文件夹里面才可以,

  将HelloWorld.class文件放入到相应的文件夹E:\exam\p\test\practise后,

  Java基础知识总结二(2)

  重新运行上面的命令,运行成功,结果如下图所示,

  Java基础知识总结二(2)

  还有需要特别注意的一点是:当前路径必须在.class字节码文件包结构的上层目录,例如,在我的实验中,是E:\exam, 否则将会出现错误。

  这样做的原因是:在配置classpath环境变量时,classpath环境变量配置为“ . ” ,所以JVM会去当前目录下找.class文件,而JVM只能在.class字节码包结构的上层目录下才能找到。

  所以,在运行.class文件时必须以.class字节码文件包结构的上层目录作为上层目录。

 另外,也可以使用下面的javac命令的-d选项使得编译器在编译时自动生成和类结构相同的包的目录结构。用法如下:

   javac -d 目标目录 .java源文件名

 例如,执行下面的命令重新运行HelloWorld.java文件

  javac -d . HelloWorld.java

 需要注意的是-d和.java源文件名之间的点 “.” , 表示生成的.class文件的包的目录结构放在当前目录下。

运行后可以的到上面运行的同样的结果,如下图所示

 Java基础知识总结二(2)

  Java基础知识总结二(2)

 

(2)import语句

   使用import语句好像给本类中使用的外面的类提供了一个声明。import语句用于提高代码的清晰度和可读性,减少代码冗余。使用import语句应注意以下几点,

     1>import语句必须放在类的外部,且仅能在package语句的后面。

     2>如果需要用到某个包下面的多个类时,可以使用“ * ”通配符导入该包下面的所有类。但是,使用“ * ”通配符只能导入该包下面的类,而不能导入该包下面的子包中的       类,例如,

     可以使用import java.util.*; 导入util包中的所有类,但是不能导入util子包中的类;

     如果需要导入util子包中的类,应该带上子包名,例如,如果要导入util子包logging中中的所有类,import语句应为

     import java.util.logging.*;

    3>只能用统配符“ * ”导入一个包,而不能导入多个包。例如,不能用import java.*;或者import java.*.*;导入以java开头的所有包。

    4>还需要知道的一点是,java.lang包是编译器编译程序时默认自动导入的,在写import语句时,可以不用再写java.lang包的导入语句。