1.为什么要包?

1) 开发时有很多类,如果放在一个文件夹中不方便管理,而且容易重复

2) 将字节码(.class)进行分类存放 

3) 包其实就是文件夹(包在文件系统中是以文件夹的形式存在的)

2.定义包的格式

 

包一般会使用公司域名反写,多级包全部小写,用”.”连接

 

package 包名;

多级包用.分开即可

例:

  1. . package com.baidu;//.是路径分隔符,com文件夹下有个baidu文件夹
  2. . class Demo1_Package {
  3. .         public static void main(String[] args) {
  4. .             System.out.println("Hello World!");
  5. .     }
  6. . }

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.如果是不同包下的类之间的访问,可以通过导包的形式实现,这样也不用写全类名

 

 

  1. . package com.baidu;
  2. . class Demo1_Package {
  3. .         public static void main(String[] args) {
  4. .             com.baidu.Person p = new com.baidu.Person("张三",23);
  5. .             System.out.println(p.getName() + "..." + p.getAge());
  6. .         }
  7. . }
  8. . package com.baidu;
  9. . public class Person {
  10. .         private String name;
  11. .         private int age;
  12. .     public Person(){}
  13. .         public Person(String name,int age) {
  14. .             this.name = name;
  15. .             this.age = age;
  16. .         }
  17. .         public void setName(String name) {
  18. .             this.name = name;
  19. .         }
  20. .         public String getName() {
  21. .            return name;
  22. .         }
  23. .         public void setAge(int age) {
  24. .             this.age = age;
  25. .     }
  26. .         public int getAge() {
  27. .             return age;
  28. .     }
  29. . }

6.import关键字

import(导入 关键字)其实就是让有包的类对调用者可见,不用写全类名了.导包后Person类对于Demo1_Package就可见了  

  1)导包格式(导类)

  2) import包名. 包名.类名;(导入具体类)

 

  Import com.baidu.*  (导入*,*代表通配符,他回到该包下挨个匹配,匹配上就导入,效率会稍稍低一点)(在开发中用的都是导入具体的类)

  当多个文件夹下有相同的类名时,只能有一个导包使用,其他必须仍然书写全名。

  当想一下导入包中多个类时,可以使用*代表该包下的所有类。不建议使用,用谁导谁)

  注意:如果当前文件夹下有该类会优先访问当前文件夹中的类,而不去找导入的类。所以在测试导包时,确保当前文件夹中没有同名的.class或者.java。

7.package,import,class书写顺序

1) Package必须放到可执行的第一句,只能有一句

 

当指定了该类所在的包后,该类的全名为:包名+类名

 

 

2) Import放到他们中间(导入几个类,就写几句)

3) Class放到以上的后面

案例:

  1. . package com.baidu;
  2. . import com.baidu.Person;
  3. . import com.xxx.Student;
  4. . //import java.util.Scanner; //建议在开发中我们用的都是导入具体的类
  5. . import java.util.*; //*代表通配符,他会到该包下挨个匹配,匹配上就导入
  6. . class Demo1_Package {
  7. .         public static void main(String[] args) {
  8. .             Person p = new Person("张三",23);
  9. .             System.out.println(p.getName() + "..." + p.getAge());
  10. .     }
  11. . }
  12. .
  13. . package com.baidu;
  14. . public class Person {
  15. .         private String name;
  16. .     private int age;
  17. .      public Person(){}
  18. .      public Person(String name,int age) {
  19. .             this.name = name;
  20. .             this.age = age;
  21. .         }
  22. .         public void setName(String name) {
  23. .         this.name = name;
  24. .         }
  25. .         public String getName() {
  26. .             return name;
  27. .     }
  28. .      public void setAge(int age) {
  29. .             this.age = age;
  30. .         }
  31. .         public int getAge() {
  32. .             return age;
  33. .         }
  34. . }

     

posted @ 2016-11-25 00:09  凯玲之恋  阅读(139)  评论(0)    收藏  举报