JavaSE学习笔记_9:Java包

来源:互联网 发布:知敬畏守底线心得体会 编辑:程序博客网 时间:2024/06/05 14:59

 Java包

 

java.lang:java的核心包。Jdk1.2版本以后,该包中的类自动导入。

java.awt:用于制作图形界面。

java.io:用于操作设备上的数据。

java.util:定义的是java的工具类,如集合,日期。

java.net:用于网络通讯。

 

 

1、包package

包:就是一个文件夹。用于存放类文件的。不同包中的类文件名可以重复。包的出现让程序的源文件和类文件分离。一般包中存放的.class文件对应的.java文件中不包含测试类(主类)。

 

包:

① 对类文件进行分类管理。

② 给类提供多层命名空间。

③ 写在程序文件的第一行。

④ 类名的全称:包名.类名。有两个体现。运行、创建。

⑤ 包也是一种封装形式。

 

如:

Package pack;

class PackageDemo

{

Public static void main(String[] args)

{

System.out.println(“hello package”);

}

}

 

(1)手动创建包:

在A路径下,建立一个包pack。

打开dos命令行,切换到源文件所在的路径下,输入以下命令:javac PackageDemo.java,则在该路径下产生一个.class文件。再将该.class文件放进包中。如果A路径就是当前路径,则再在dos控制台输入以下命令:java pack.PackageDemo;如果A路径不是当前路径,则运行前在执行一条命令:set classPath=.;A,然后再在dos控制台输入以下命令:java pack.PackageDemo,则会显示出结果。

 

(2)通过命令创建包:

打开dos命令行,切换到源文件所在的路径下,输入以下命令:javac -d  c:\myclass (可以是任意的路径,随你意,如果是当前路径,则用.代替) PackageDemo.java,则在c:\myclass路径下会有一个包pack,里面有一个.class文件。

在分别再dos控制台上先后输入命令:set classPath=c:\myclsss(注意不是c:\myclass\pack)和java pack.PackageDemo,则会显示出结果。

 

2、包与包之间的访问

(1)包与包之间进行访问,被访问的包中的类以及类中的成员访问权限必须是public。(一个文件中允许有多个类,但是只有一个公共类。因为类前面加了公共以后,类名必须要和java文件名保持一致,现在有多个公共类,到底保存为哪一个就不清楚了。)

 

(2)在A路径下分别创建两个.java文件。

PackageDemo.java

代码:

package pack;

class PackageDemo

{

public static void main(String[] args)

{

packa.DemoA d=new packa.DemoA();

d.show();

}

}

 

DemoA.java

代码:

package packa;

pubic class DemoA

{

public void show()

{

System.out.println(“demoa show run”);

}

}

它们的.class文件存放在B路径下。

 

 

打开dos命令行,切换到A路径下:

先编译DemoA.java。javac -d c:\myclass DemoA.java。在编译PackageDemo.java,在此之前需指定路径,让虚拟机可以找到DemoA.class文件,就不需要在考虑是不还要编译DemoA.java,通过命令:set classPath=B。也为后面运行成功铺垫,运行时找到是.class文件,而它们都存在B路径下。

 

再运行PackageDemo.class文件。java pack.PackageDemo。

 

以前,我们把多个文件都放在一个文件夹下,不管是.java文件还是.class文件。那么我们互相访问的规则和一个文件中多个类之间的访问一样。

 

protected:

现在:PackageDemo.java、DemoA.java、DemoB.java都存放在A路径下;PackageDemo.class、DemoA.class、DemoB.class文件都存放到B路径下。

DemoA.java

代码:

package packa;

pubic class DemoA extends packb.DemoB

{

public void show()

{

System.out.println(“demoa show run”);

method();

}

}

 

DemoB.java

代码:

package packb;

public class DemoB

{

public void method()

{

System.out.println(“demoB method run”);

}

}

 

 

PackageDemo.java

代码:

package pack;

class PackageDemo

{

public static void main(String[] args)

{

packa.DemoA d1=new packa.DemoA();

d1.show();

 

packb.DemoB d2=new packb.DemoB();

d2.method();

}

}

编译运行成功。

当是如果:

DemoA.java

代码:

package packa;

pubic class DemoA extends packb.DemoB

{

public void show()

{

System.out.println(“demoa show run”);

method();

}

}

 

DemoB.java

代码:

package packb;

protected public class DemoB

{

public void method()

{

System.out.println(“demoB method run”);

}

}

 

 

PackageDemo.java

代码:

package pack;

class PackageDemo

{

public static void main(String[] args)

{

packa.DemoA d1=new packa.DemoA();

d1.show();

 

packb.DemoB d2=new packb.DemoB();

d2.method();

}

}

才可以编译运行成功。

 

包也有层次关系。如:

DemoA.java

代码:

package packa.haha.heihei.hehe;

pubic class DemoA

{

public void show()

{

System.out.println(“demoa show run”);

}

}

 

PackageDemo.java

代码:

package pack;

class PackageDemo

{

public static void main(String[] args)

{

packa.haha.heihei.hehe.DemoA 

d=new packa.haha.heihei.hehe.DemoA();

d.show();

}

}

 

3、导入import

刚才我们也看到了,包名一旦具有了层次,访问里边的类就比较麻烦。因此我们可以使用关键字:import。导入的是包中类。

如:

DemoA.java

代码:

package packa.haha.heihei.hehe;

pubic class DemoA

{

public void show()

{

System.out.println(“demoa show run”);

}

}

 

PackageDemo.java

代码:

package pack;

import packa.haha.heihei.hehe.DemoA

class PackageDemo

{

public static void main(String[] args)

{

DemoA d=new DemoA();

d.show();

}

}

如果想使用包中多个类,可以一个一个导入,如:

import packa.haha.heihei.hehe.DemoA

import packa.haha.heihei.hehe.DemoA1

import packa.haha.heihei.hehe.DemoA2

 

也可以:

import packa.haha.heihei.hehe.*

但是最好需要哪个导入哪个。节省内存。

 

包名不能重复,建立包名可以使用url来完成定义,url是唯一的。特别是多层次包。

 

4、jar包

在java当中,jar包是一个压缩包。当包越来越多的时候,我们就将它们压缩成一个jar包。这与Windows中的打包思想相同。Jar包也可以被WinRAR打开。压缩的都能。

 

打包用到了JDK中的一个工具:jar.exe。在dos控制台中使用该工具要切换到包所在的路径下。

打包命令:jar -cf haha(jar包的包名任意取).jar  包1 包2 包3 ....

查看归档文件:如:jar -tf haha.jar

 

 

数据重定向:如:jar -tf haha.jar  >c:\1.txt

将haha.jar中的内容复制到c盘下的1.txt文件中

 

 

jre下的bin:运行环境类库

jdk中的bin:编译环境类库,bin下面有tool.jar。当程序编译后:NoClassDefFoundError:com/sun/tools/javac/main。则表示jdk中的bin下面的tool.jar丢失。在别处烤一个可恢复。

 

 

 

 

2015-11-252015-11-30

0 0
原创粉丝点击