java:package包的概念

包的作用

  • 解决类同名的问题
  • 便于管理:类多了放在不同的包下面
  • 便于访问控制:同一个包下面的类可以直接使用不需要引入

声明包

  • 必须将这个包的声明放在这个源文件的开头。
  • 包名的命名规则:
    一般使用组织的反向域名:fanyi.baidu.com

例如:

package animals;
 
/* 文件名 : Animal.java */
public class Animal{
    
    
}

导入包

import 包名.类名;
import 包名.*;

例如:

import animals.Animal

常用的java包:

java.lang

java核心的包,改包默认自动导入不需要显式引入。如:String、System、Math都在这个包里

java.util

包含常用的工具类,如Scanner、Arrays等

java.io

包含输入输出类

java.sql

包含数据库相关类

java.net

包含网络相关类

java.awt

包含图像窗口相关类

注意:建一个类的时候一定要建在一个包内,否则你的类会放在一个默认包(default package)里,这是不好的,会导致改类无法被引用。

package 的目录结构

// 文件名: Runoob.java
 
package com.runoob.test;
public class Runoob {
    
    
      
}
class Google {
    
    
      
}
$javac -d . Runoob.java

编译后的文件:

.\com\runoob\test\Runoob.class
.\com\runoob\test\Google.class

如何导入呢?你可以像下面这样来导入所有 \com\runoob\test\ 中定义的类、接口等:

扫描二维码关注公众号,回复: 12788076 查看本文章
import com.runoob.test.*;

分开组织

这样的话我们的编译文件和源文件是在同一层级的,这样没有区分,所以我们一般会将源文件和字节码文件分开:

<path-one>\sources\com\runoob\test\Runoob.java
<path-two>\classes\com\runoob\test\Google.class

类目录的绝对路径叫做 class path。设置在系统变量 CLASSPATH 中。编译器和 java 虚拟机通过将 package 名字加到 class path 后来构造 .class 文件的路径。

\classes 是 class path,package 名字是 com.runoob.test,而编译器和 JVM 会在 \classes\com\runoob\test 中找 .class 文件。

一个 class path 可能会包含好几个路径,多路径应该用分隔符分开。默认情况下,编译器和 JVM 查找当前目录。JAR 文件按包含 Java 平台相关的类,所以他们的目录默认放在了 class path 中。

设置 CLASSPATH 系统变量

1、显示当前的CLASSPATH变量:

Windows 平台(DOS 命令行下):C:> set CLASSPATH
UNIX 平台(Bourne shell 下):# echo $CLASSPATH

2、删除当前CLASSPATH变量内容:
Windows 平台(DOS 命令行下):C:> set CLASSPATH=
UNIX 平台(Bourne shell 下):# unset CLASSPATH; export CLASSPATH

3、设置CLASSPATH变量:

Windows 平台(DOS 命令行下): C:> set CLASSPATH=C:\users\jack\java\classes
UNIX 平台(Bourne shell 下):# CLASSPATH=/home/jack/java/classes; export CLASSPATH

参考资料:
https://www.runoob.com/java/java-package.html
https://www.runoob.com/w3cnote/java-compile-with-package.html

猜你喜欢

转载自blog.csdn.net/weixin_43972437/article/details/113790528