一、包的基本概念
当有多个开发人员共同开发同一个项目,肯定会出现类名称相同的情况,这样一来就会比较麻烦
此时可以利用 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());
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
此时编译时需要加上相应参数:
-d --- 表示生成目录,生成的目录以 package 的定义为准
. --- 表示在当前所在文件夹中生成
- 2
执行完以上命令后,会自动生成相应的文件夹(包),之后再执行类时就必须输入完整的“包.类名称”,执行语法:
程序的运行结果与之前并没有什么不同,加入包只是让类的管理更加方便
二、import 语句
如果几个类存放在不同的包中,在使用类时就必须通过 import 语句导入,
import 的语法格式:
import 包名称.子包名称.类名称;//手工导入所需要的类
import 包名称.子包名称.*;//由JVM自动加载所需要的类
- 2
定义 org.lxh.test 目录下的 Demo1.java
此处的 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());
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
如果在一个类中导入一个包中多个类时,一个个地导入会比较麻烦,可以使用导入“*” 的方式由 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());
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
三、系统常见包
四、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;
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
使用静态导入:
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));
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
由于程序中使用了静态导入,所以Demo1 类中的所有静态方法可以直接在 Test 类中使用,而 不需要使用 “类.静态方法()” 的形式使用。