文章目录

  • 一、包的基本概念
  • 二、import 语句
  • 三、系统常见包
  • 四、Java 新特性 -- 静态导入


一、包的基本概念

当有多个开发人员共同开发同一个项目,肯定会出现类名称相同的情况,这样一来就会比较麻烦

java代码包结构 java包的用法_java


此时可以利用 package 关键字来解决此问题。

package 是在使用多个类或接口时,为了避免名称重复而采用的一种措施,直接在程序中加入 package 关键字即可:

package 包名称.子包名称
package org.lxh.test;
class Demo{
    public String getInfo(){
        return "Hello World !!!";
    }
}
public class Test{
    public static void main(String[] args) {
        System.out.println(new Demo().getInfo());
    }
}

此时编译时需要加上相应参数:

java代码包结构 java包的用法_java代码包结构_02

-d --- 表示生成目录,生成的目录以 package 的定义为准
. --- 表示在当前所在文件夹中生成

java代码包结构 java包的用法_java代码包结构_03


执行完以上命令后,会自动生成相应的文件夹(包),之后再执行类时就必须输入完整的“包.类名称”,执行语法:

java代码包结构 java包的用法_java_04


程序的运行结果与之前并没有什么不同,加入包只是让类的管理更加方便

二、import 语句

如果几个类存放在不同的包中,在使用类时就必须通过 import 语句导入,
import 的语法格式:

import 包名称.子包名称.类名称;//手工导入所需要的类
import 包名称.子包名称.*;//由JVM自动加载所需要的类

定义 org.lxh.test 目录下的 Demo1.java

java代码包结构 java包的用法_包名_05


此处的 Demo1 必须设置为 public,这样 Test 才能对其进行访问,也就是说如果一个类要被外包访问,则此类一定要定义成 public class

import org.lxh.test.Demo1;//引用 Demo1 类

public class Test{
    public static void main(String[] args) {
        System.out.println(new Demo1().getInfo());
    }
}

如果在一个类中导入一个包中多个类时,一个个地导入会比较麻烦,可以使用导入“*” 的方式由 JVM 根据需要自己加载的类。

import org.lxh.test.*

但是当一个程序中同时导入了两个包的同名类,使用时就必须明确地写出完整的“包.类名称”

import org.lxh.demo.a.*;//包中存在Demo类
import org.lxh.demo.c.*;//包中存在Demo类
public class Test{
	public static void main(String[] args){
		org.lxh.demo.a.Demo d = new org.lxh.demo.a.Demo();
		System.out.println(d.getInfo());
	}
}

三、系统常见包

java代码包结构 java包的用法_包_06


java代码包结构 java包的用法_java代码包结构_07

四、Java 新特性 – 静态导入

如果一个类中的方法全部是使用 static 声明的静态方法,则在导入时就可以直接使用 import static 的方式导入:

import static 包.类.*

定义一个类,全部由静态方法组成:

package org.lxh.test;

public class Demo1{
    public static  int add(int i,int j){
        return i+j;
    }
    public static int sub(int i,int j){
        return i-j;
    }
    public static int mul(int i,int j){
        return i*j;
    }
}

使用静态导入:

import static org.lxh.test.Demo1.*;//静态导入

public class Test{
    public static void main(String[] args) {
        System.out.println("3+3 = " + add(3,3));
        System.out.println("3-3 = " + sub(3,3));
    }
}

由于程序中使用了静态导入,所以Demo1 类中的所有静态方法可以直接在 Test 类中使用,而 不需要使用 “类.静态方法()” 的形式使用