包
包
1.为什么要包?
1) 开发时有很多类,如果放在一个文件夹中不方便管理,而且容易重复
2) 将字节码(.class)进行分类存放
3) 包其实就是文件夹(包在文件系统中是以文件夹的形式存在的)
2.定义包的格式
包一般会使用公司域名反写,多级包全部小写,用”.”连接
package 包名;
多级包用.分开即可
例:
-
. package com.baidu;//.是路径分隔符,com文件夹下有个baidu文件夹
-
. class Demo1_Package {
-
. public static void main(String[] args) {
-
. System.out.println("Hello World!");
-
. }
-
. }
3.定义包的注意事项
1) package语句必须是程序的第一条可执行的代码
2) package语句在一个java文件中只能有一个
3) 如果没有package,默认表示无包名
4.带包的类编译和运行
1) 编译运行带包的类
a.javac编译的时候带上-d即可
b.javac -d . HelloWorld.java(其中.代表当前路径)
注意:定义包时类在a包下,则生成的.class文件必须在a文件夹下,否则找不到类。
2) 通过java命令执行
java 包名.HellWord(全类名)
5.包下类之间的访问
1)类全名访问
在访问类时,为了能够找到该类,使用类时,应该使用 包含 包 的类全名。
如:字符串String在使用时,可以按照如下方式访问:
java.lang.String s = “一个字符串”;
如果想访问一个类,则需要使用该类的全名
com.itheima.MyClass mc = new com.itheima.MyClass();
2)同包下省略包名
当被使用的类与使用的类在同一个文件夹下,或者被使用的类是java.lang包下时,我们通常可以省略掉类的包,直接使用类型,避免使用类全名。
注意事项:
A.使用者与被使用者,在同一个包下,可以省略包名
B.如果是java.lang包下的类,也可以省略
c.如果是不同包下的类之间的访问,可以通过导包的形式实现,这样也不用写全类名
-
. package com.baidu;
-
. class Demo1_Package {
-
. public static void main(String[] args) {
-
. com.baidu.Person p = new com.baidu.Person("张三",23);
-
. System.out.println(p.getName() + "..." + p.getAge());
-
. }
-
. }
-
. package com.baidu;
-
. public class Person {
-
. private String name;
-
. private int age;
-
. public Person(){}
-
. public Person(String name,int age) {
-
. this.name = name;
-
. this.age = age;
-
. }
-
. public void setName(String name) {
-
. this.name = name;
-
. }
-
. public String getName() {
-
. return name;
-
. }
-
. public void setAge(int age) {
-
. this.age = age;
-
. }
-
. public int getAge() {
-
. return age;
-
. }
-
. }
6.import关键字
import(导入 关键字)其实就是让有包的类对调用者可见,不用写全类名了.导包后Person类对于Demo1_Package就可见了
1)导包格式(导类)
2) import包名. 包名.类名;(导入具体类)
Import com.baidu.* (导入*,*代表通配符,他回到该包下挨个匹配,匹配上就导入,效率会稍稍低一点)(在开发中用的都是导入具体的类)
当多个文件夹下有相同的类名时,只能有一个导包使用,其他必须仍然书写全名。
当想一下导入包中多个类时,可以使用*代表该包下的所有类。不建议使用,用谁导谁)
注意:如果当前文件夹下有该类会优先访问当前文件夹中的类,而不去找导入的类。所以在测试导包时,确保当前文件夹中没有同名的.class或者.java。
7.package,import,class书写顺序
1) Package必须放到可执行的第一句,只能有一句
当指定了该类所在的包后,该类的全名为:包名+类名
2) Import放到他们中间(导入几个类,就写几句)
3) Class放到以上的后面
案例:
-
. package com.baidu;
-
. import com.baidu.Person;
-
. import com.xxx.Student;
-
. //import java.util.Scanner; //建议在开发中我们用的都是导入具体的类
-
. import java.util.*; //*代表通配符,他会到该包下挨个匹配,匹配上就导入
-
. class Demo1_Package {
-
. public static void main(String[] args) {
-
. Person p = new Person("张三",23);
-
. System.out.println(p.getName() + "..." + p.getAge());
-
. }
-
. }
-
.
-
. package com.baidu;
-
. public class Person {
-
. private String name;
-
. private int age;
-
. public Person(){}
-
. public Person(String name,int age) {
-
. this.name = name;
-
. this.age = age;
-
. }
-
. public void setName(String name) {
-
. this.name = name;
-
. }
-
. public String getName() {
-
. return name;
-
. }
-
. public void setAge(int age) {
-
. this.age = age;
-
. }
-
. public int getAge() {
-
. return age;
-
. }
-
. }

浙公网安备 33010602011771号