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

原创 2006年05月31日 12:57:00


包  //建立包后同一个文件中的类都属于这个包,所有的类都必须按包名所对应的目录,在硬盘中存放。同一个包中的类在相互调用时,是不用指定包名的。   
---在编译时对于下面这个类,用这样的方法  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   //解压文件,显示详细信息

java之jvm学习笔记八(实践对jar包的代码签名)

欢迎装载请说明出处:http://blog.csdn.net/yfqnihao/article/details/8267669                            课程源码:htt...

Java学习笔记(一)用Eclipse把一个简单游戏项目生成可执行的JAR文件

今天练习java时所用的项目来自于《Headfirst java》
  • emmagy
  • emmagy
  • 2014年06月24日 15:26
  • 1598

安卓学习笔记---将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)

最近老板叫我将自己写的代码打成一个jar包供别人使用,说实话还真是第一次弄,有什么问题不会直接问度娘,这是简单粗暴的方法,我百度了一下说可以打包,只是打包的都只有src这个文件里面的java文件,但是...

Java学习笔记四。设计模式、基本数据类型、包装类、异常、断言、包、访问权限、命名规范、jar

设计模式: 工厂设计模式 代理设计模式 一共23种设计模式,用的一般比较多的就是工厂模式和代理模式。 一般写字符串比较的时候把常量或者字符串写在前面,如: String temp = “a”...

JAVA学习笔记:(四)创建jar包

一、jar包介绍 1.jar包目录结构 -- META-INF    `-- MANIFEST.MF     -- test      `--Test.class test是包名...

java之jvm学习笔记七(jar包的代码认证和签名)

欢迎装载请说明出处:http://blog.csdn.net/yfqnihao                     前言:                     如果你循序渐进的看到...

java之jvm学习笔记七(jar包的代码认证和签名)

分类: java之jvm学习笔记 2012-12-07 03:03 479人阅读 评论(0) 收藏 举报                     欢迎装载请说明出处:http://...

java学习笔记--springboot集成UrlRewrite实现URL伪静态化[jar包和war包]

前言 最近项目seo那边提出,要将所有的URL都做成伪静态的URL,虾米?有木有搞错!?项目都完成了好不好?改需求项目还不延期? 而且,我还是一个刚毕业的两百斤的宝宝好不好,我不会呀。。。 于是,我...

maven 学习笔记(四)-创建简单的eclipse+maven工程(简单的java项目打包为jar并混淆jar文件)

1、按前面例子创建一个简单的java项目      2、创建项目后,项目结构如下图:          2、pom.xml文件配置内容如下: modelVersion>4.0.0modelV...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java学习笔记(八)----包,jar文件
举报原因:
原因补充:

(最多只允许输入30个字)