java学习笔记(八)----包,jar文件
包? //建立包后同一個文件中的類都屬于這個包,所有的類都必須按包名所對應的目錄,在硬盤中存放。同一個包中的類在相互調用時,是不用指定包名的。???
---在編譯時對于下面這個類,用這樣的方法? 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学习笔记(八)----包,jar文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java学习笔记(七)----异常
- 下一篇: java学习笔记(九)----多线程