package包 包类似于操作系统的文件夹 作用: 1.包可以提供文件(.class)的分类管理 2.提供独立的命名空间,防止命名冲突 3.设置了空间的访问权限的控制(可以提供很好的封装性) 包的声明: package 包名; package 包.子包; 按照惯例,包名使用小写字母组成。 建议包名采用“域名的倒写.项目名.模块名”的方式,以确保包名的唯一性, 例如com.lah.ghgj 包与包之间,包与类之间,使用.进行分割; 声明包的语法要求 1、声明位置:包声明语句必须是源文件中的第一条有效语句 2、声明数量:包声明语句之多只能有一条 当声明包时,编译和运行会发生变化,编译javac -d e: PackTest.java 生成.class文件 到指定路径。javac -d . PackTest.java生成.class到当前路径运行java p.PackTest 类的访问 在同一包中,可以通过简单名访问包中的其他类 在不同的包中不可通过简单名访问包外的类。 访问包外的类需要使用权限定名或通过导入包后可使用简单名访问。
import的语法要求
语句位置:import语句必须出现在包声明语句之后,类声明之前语句数量:import语句语句可以有0~n条语句 import 包.* ;导入该包中所有的类型,不包括子包中的类型的java.lang包中类会自动导入明确导入java.util.Arrays,按需导入java.util.*。导入同一个类时,明确导入会遮蔽按需导入 import与import static的区别:import导入的是包中的类型。import static导入的包中类型中声明的静态成员。当导入某类型的静态成员时,就可以直接使用该成员名字进行访问,就好像该成员声明在当前类中一样。 package p; public class PackTest { public static void main(String[] args) { //同一包中,简单命名访问其他类 new Pack(); //不同包中,通过导包或者权限定名访问其他包中的类 This t = new This(); //全限定名 p1.This t = new p1.This(); int[] x = {1,2}; sort(x); } }