关闭

java学习笔记(八)----包,jar文件

983人阅读 评论(0) 收藏 举报


包  //建立包后同一个文件中的类都属于这个包,所有的类都必须按包名所对应的目录,在硬盘中存放。同一个包中的类在相互调用时,是不用指定包名的。   
---在编译时对于下面这个类,用这样的方法  javac -d . TestException 就可以不用自已创建目录,它自己就可以创建一个fhx的目录,然后把所有的类放到里面。       
package fhx;   //定义包,这样,在下面的所有的类都在这个包中,必须建一个名为fhx的文件夹,将下面编译后的所有的类,都放到这个文件夹中,运行时输入 java fhx.TestException
class Test
{ public int devide(int x,int y) throws Exception
   {  int result=x/y;
      return result;
   }
}
class TestException
{ public static void main(String[] args)
  { try
    { new Test().devide(3,0);}
    catch(Exception ex)
    { System.out.println(ex.getMessage()); }
    System.out.println("program is running here!");
  }
}
---如果一个包中的类要访问另一个包中的类,则那个包中的类前必须加上public
package fhx; 
public class Test
{ public int devide(int x,int y) throws Exception
   {  int result=x/y;
      return result;
   }
}


package hx;
class TestException
{ public static void main(String[] args)
  { try
    { new fhx.Test().devide(3,0);}  //这里必须打上Test所在的包名,因为一个包中的类在调用另一个包中的类,必须写上完整的包名。
    catch(Exception ex)
    { System.out.println(ex.getMessage()); }
    System.out.println("program is running here!");
  }
}

----如果要多次用到fhx包中的类,可以用import fhx.*; 这样在调用fhx包中的类,就不用再前面加上fhx.了
package hx;
import fhx.*;
class TestException
{ public static void main(String[] args)
  { try
    { new Test().devide(3,0);}      //这里就不用写fhx.Text().devide(3,0) 
    catch(Exception ex)
    { System.out.println(ex.getMessage()); }
    System.out.println("program is running here!"); 
  }
}
---如果同时调用两个包,而这两个包又含有相同的类名,调用这个类时必须在类前写上完整的包名
  import java.sql.*;
  import java.util.*;//它们下有下同的类Data
  java.util.Data  //调用util下的Data
 

***java下常用的包***
*java.lang----包含一些java语言的核心类,如String,Math,Integer,System,Thread,提供常用的功能。
*java.awt-----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)
*java.applet--包含applet运行所需的一些类。
*java.net-----包含执行与网络相关的操作的类。
*java.io------包含能提供多种输入/输出功能的类。
*java.util----包含一些实用工具类,如定义系统特性,使用与日期日历相关的函数。

 

***********访问控制*************
-----------------------------------
|             |private|defalut|protected|public|
--------------------------------------------------
|同一类        |  T    |   T   |   T     |   T  |    
|同一包中的类  |       |   T   |   T     |   T  |
-------------------------------------------------
|子类          |       |       |   T     |   T  |
-------------------------------------------------
|其它包中的类  |        |       |         |  T   |
--------------------------------------------------
类本身也有访问控制,即在定义类的class关键字前加上访问控制符,但类本身只有两种访问控制,即public和默认,父类不能是private和protected,否则子类无法继承。public修饰的类能被的所有的类访问,默认修饰(即class关键字前没有访问控制符)的类,只能被同一包中的所有类访问。       
package fhx; 
public class Test
{ public int devide(int x,int y) throws Exception
   {  int result=x/y;
      return result;
   }
  void fun1()  //前面没有加public,所以别的包中的类不能调用它,只有同一包中的类可以调用它
  {...}
  private void fun2()  //加private只能被同一类中的函数访问
  { fun1(); }
}


package hx;
class TestException
{
  public static void main(String[] args)
  { try
    { new fhx.Test().devide(3,0);} 
      new fhx.Test().fun1(); // 这条语句在编译时出错
    catch(Exception ex)
    { System.out.println(ex.getMessage()); }
    System.out.println("program is running here!");
  }
}

-----------------------------------------------------------------------------------------------

package fhx; 
public class Test
{ public int devide(int x,int y) throws Exception
   {  int result=x/y;
      return result;
   }
 protected void fun1()  //前面加protected,别的类继承这个Test类可以执行fun1()
  {...}
  private void fun2()  //加private只能被同一类中的函数访问
  { fun1();
  }
}


package hx;
class TestException
{ class TestSub extends fhx.Test  //因为fun1()前面有protect,所以这里可以调用fun1()
  {   public void fun3()
      { fun1();}
  }
  public static void main(String[] args)
  { try
    { new fhx.Test().devide(3,0);} 
      new fhx.Test().fun1(); // 虽然fun1前有protect,但是这条语名编译时出错,因为只有继承Test的类能用
    catch(Exception ex)
    { System.out.println(ex.getMessage()); }
    System.out.println("program is running here!");
  }
}


*********jar文件**********
jar -cf 新建文件名.jar 压缩的目录
jar -cvf 新建文件名.jar 压缩的目录    //在压缩时显示详细信息
jar -cvf 新建文件名.jar 压缩的目录/*  //这样就会把该目录也加到jar这个压缩文件中
jar -cvf 新建文件名.jar 压缩的目录1 压缩的目录2 //同是压缩多个目录
jar -tf 文件名.jar   //显示jar中的详细目录信息
jar -tvf 文件名.jar   //显示jar中的更为详细目录信息
jar -tvf 文件名.jar >1.txt //将jar中的文件定向到1.txt中
jar -xvf 文件名.jar   //解压文件,显示详细信息

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1176317次
    • 积分:9153
    • 等级:
    • 排名:第2162名
    • 原创:120篇
    • 转载:222篇
    • 译文:1篇
    • 评论:146条
    最新评论