亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

深入解析Java的包(package)

2019-11-26 14:58:16
字體:
來源:轉載
供稿:網友

雖然 Java 語言是典型的面向對象編程語言,但其中的八種基本數據類型并不支持面向對象編程,基本類型的數據不具備“對象”的特性――不攜帶屬性、沒有方法可調用。 沿用它們只是為了迎合人類根深蒂固的習慣,并的確能簡單、有效地進行常規數據處理。

這種借助于非面向對象技術的做法有時也會帶來不便,比如引用類型數據均繼承了 Object 類的特性,要轉換為 String 類型(經常有這種需要)時只要簡單調用 Object 類中定義的toString()即可,而基本數據類型轉換為 String 類型則要麻煩得多。為解決此類問題 ,Java為每種基本數據類型分別設計了對應的類,稱之為包裝類(Wrapper Classes),也有教材稱為外覆類或數據類型類。

每個包裝類的對象可以封裝一個相應的基本類型的數據,并提供了其它一些有用的方法。包裝類對象一經創建,其內容(所封裝的基本類型數據值)不可改變。

基本類型和對應的包裝類可以相互裝換:
由基本類型向對應的包裝類轉換稱為裝箱,例如把 int 包裝成 Integer 類的對象;
包裝類向對應的基本類型轉換稱為拆箱,例如把 Integer 類的對象重新簡化為 int。
包裝類的應用

八個包裝類的使用比較相似,下面是常見的應用場景。
1) 實現 int 和 Integer 的相互轉換

可以通過 Integer 類的構造方法將 int 裝箱,通過 Integer 類的 intValue 方法將 Integer 拆箱。例如:

public class Demo {  public static void main(String[] args) {    int m = 500;    Integer obj = new Integer(m); // 手動裝箱    int n = obj.intValue(); // 手動拆箱    System.out.println("n = " + n);        Integer obj1 = new Integer(500);    System.out.println("obj 等價于 obj1?" + obj.equals(obj1));  }}

運行結果:

n = 500obj 等價于 obj1?true



2) 將字符串轉換為整數

Integer 類有一個靜態的 paseInt() 方法,可以將字符串轉換為整數,語法為:

parseInt(String s, int radix);


s 為要轉換的字符串,radix 為進制,可選,默認為十進制。

下面的代碼將會告訴你什么樣的字符串可以轉換為整數:

public class Demo {  public static void main(String[] args) {    String str[] = {"123", "123abc", "abc123", "abcxyz"};        for(String str1 : str){      try{        int m = Integer.parseInt(str1, 10);        System.out.println(str1 + " 可以轉換為整數 " + m);      }catch(Exception e){        System.out.println(str1 + " 無法轉換為整數");      }    }  }}

運行結果:

123 可以轉換為整數 123123abc 無法轉換為整數abc123 無法轉換為整數abcxyz 無法轉換為整數


3) 將整數轉換為字符串

Integer 類有一個靜態的 toString() 方法,可以將整數轉換為字符串。例如:

public class Demo {  public static void main(String[] args) {    int m = 500;    String s = Integer.toString(m);    System.out.println("s = " + s);  }}


運行結果:

s = 500


自動拆箱和裝箱

上面的例子都需要手動實例化一個包裝類,稱為手動拆箱裝箱。Java 1.5(5.0) 之前必須手動拆箱裝箱。

Java 1.5 之后可以自動拆箱裝箱,也就是在進行基本數據類型和對應的包裝類轉換時,系統將自動進行,這將大大方便程序員的代碼書寫。例如:

public class Demo {  public static void main(String[] args) {    int m = 500;    Integer obj = m; // 自動裝箱    int n = obj; // 自動拆箱    System.out.println("n = " + n);       Integer obj1 = 500;    System.out.println("obj 等價于 obj1?" + obj.equals(obj1));  }}

運行結果:

n = 500obj 等價于 obj1?true

自動拆箱裝箱是常用的一個功能,讀者需要重點掌握。


包不但可以包含類,還可以包含接口和其他的包。

目錄以"/"來表示層級關系,例如 E:/Java/workspace/Demo/bin/p1/p2/Test.java。

包以"."來表示層級關系,例如 p1.p2.Test 表示的目錄為 /p1/p2/Test.class。
如何實現包

通過 package 關鍵字可以聲明一個包,例如:
 

  package p1.p2;

必須將 package 語句放在所有語句的前面,例如:

package p1.p2;public class Test {  public Test(){    System.out.println("我是Test類的構造方法");  }}

表明 Test 類位于 p1.p2 包中。
包的調用

在Java中,調用其他包中的類共有兩種方式。
1) 在每個類名前面加上完整的包名

程序舉例:

public class Demo {  public static void main(String[] args) {    java.util.Date today=new java.util.Date();    System.out.println(today);  }}

運行結果:

Wed Dec 03 11:20:13 CST 2014


2) 通過 import 語句引入包中的類

程序舉例:

import java.util.Date;// 也可以引入 java.util 包中的所有類// import java.util.*;public class Demo {  public static void main(String[] args) {    Date today=new Date();    System.out.println(today);  }}


運行結果與上面相同。

實際編程中,沒有必要把要引入的類寫的那么詳細,可以直接引入特定包中所有的類,例如 import java.util.*;。
類的路徑

Java 在導入類時,必須要知道類的絕對路徑。

首先在 E:/Java/workspace/Demo/src/p0/ 目錄(E:/Java/workspace/Demo/src/ 是項目源文件的根目錄)下創建 Demo.java,輸入如下代碼:

package p0;import p1.p2.Test;public class Demo{  public static void main(String[] args){    Test obj = new Test();  }}

再在 E:/Java/workspace/Demo/src/p1/p2 目錄下創建 Test.java,輸入如下代碼:

package p1.p2;public class Test {  public Test(){    System.out.println("我是Test類的構造方法");  }}

假設我們將 classpath 環境變量設置為 .;D:/Program Files/jdk1.7.0_71/lib,源文件 Demo.java 開頭有 import p1.p2.Test; 語句,那么編譯器會先檢查 E:/Java/workspace/Demo/src/p0/p1/p2/ 目錄下是否存在 Test.java 或 Test.class 文件,如果不存在,會繼續檢索 D:/Program Files/jdk1.7.0_71/lib/p1/p2/ 目錄,兩個目錄下都不存在就會報錯。顯然,Test.java 位于 E:/Java/workspace/Demo/src/p1/p2/ 目錄,編譯器找不到,會報錯,怎么辦呢?

可以通過 javac 命令的 classpath 選項來指定類路徑。

打開CMD,進入 Demo.java 文件所在目錄,執行 javac 命令,并將 classpath 設置為 E:/Java/workspace/Demo/src,如下圖所示:

運行Java程序時,也需要知道類的絕對路徑,除了 classpath 環境變量指定的路徑,也可以通過 java 命令的 classpath 選項來增加路徑,如下圖所示:

注意 java 命令與 javac 命令的區別,執行 javac 命令需要進入當前目錄,而執行 java 命令需要進入當前目錄的上級目錄,并且類名前面要帶上包名。

可以這樣來理解,javac是一個平臺命令,它對具體的平臺文件進行操作,要指明被編譯的文件路徑。而java是一個虛擬機命令,它對類操作,即對類的描述要用點分的描述形式,并且不能加擴展名,還要注意類名的大小寫。

這些命令比較繁雜,實際開發都需要借助 Eclipse,在Eclipse下管理包、編譯運行程序都非常方便。Eclipse 實際上也是執行這些命令。
包的訪問權限

被聲明為 public 的類、方法或成員變量,可以被任何包下的任何類使用,而聲明為 private 的類、方法或成員變量,只能被本類使用。

沒有任何修飾符的類、方法和成員變量,只能被本包中的所有類訪問,在包以外任何類都無法訪問它。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美综合在线视频| 成人观看高清在线观看免费| 欧美黄色成人网| 欧美亚洲午夜视频在线观看| 精品福利樱桃av导航| 欧美成年人视频网站欧美| 91精品国产91久久久久久| 亚洲在线第一页| 欧美成人一区在线| 91青草视频久久| 久久亚洲精品网站| 中国日韩欧美久久久久久久久| 性欧美视频videos6一9| 欧美激情中文字幕在线| 欧洲美女7788成人免费视频| 全色精品综合影院| 国产激情久久久| 亚洲欧美日韩网| 亚洲第一中文字幕| 疯狂蹂躏欧美一区二区精品| 2020国产精品视频| 亚洲精品国产精品国自产在线| 亚洲精品在线观看www| 久久久亚洲国产| 欧美高跟鞋交xxxxxhd| 一区二区三区高清国产| 成人h视频在线| 91黑丝高跟在线| 成人免费在线网址| 亚洲成年网站在线观看| 国产午夜精品免费一区二区三区| 自拍偷拍免费精品| 色妞在线综合亚洲欧美| 日韩av网站电影| 中文字幕精品视频| 精品一区精品二区| 国产精品91久久久久久| 亚洲福利视频免费观看| 97精品视频在线| 日韩国产激情在线| 亚洲第一av在线| 91po在线观看91精品国产性色| www.久久久久久.com| 国产精品福利片| 国产欧亚日韩视频| 欧美成人高清视频| 久久久久九九九九| 日韩免费在线观看视频| 国产精品久久综合av爱欲tv| 欧美亚洲另类视频| 久久国产精品网站| 亚洲视频在线观看| 国产欧美精品久久久| 欧美精品久久久久久久| 欧美午夜视频一区二区| 国产一区二中文字幕在线看| 日韩有码在线电影| 国产精品羞羞答答| 亚洲人在线视频| 国产精品久久久999| 91精品美女在线| 国产精品久久久久久婷婷天堂| 国产一区二区三区中文| 亚洲天堂av在线免费| 欧美成人黑人xx视频免费观看| 亚洲欧美三级伦理| 欧美小视频在线| 81精品国产乱码久久久久久| 国产精品一区二区三区在线播放| 亚洲福利精品在线| 91久久综合亚洲鲁鲁五月天| 日韩一区二区在线视频| 亚洲视频自拍偷拍| 欧美夫妻性生活xx| 色综合色综合网色综合| 欧美性猛交xxxx乱大交3| 亚洲精品美女久久久久| 久久国产精彩视频| 亚洲精品国产精品国产自| 亚洲欧美日本伦理| 亚洲精品国产电影| 亚洲香蕉av在线一区二区三区| 亚洲色图50p| 成人av在线亚洲| 91最新在线免费观看| 日韩在线观看你懂的| 久久久av电影| 欧美精品手机在线| 久久综合国产精品台湾中文娱乐网| 91网在线免费观看| 欧美亚洲另类在线| 成人av在线网址| 中文字幕欧美日韩在线| 亚洲xxxx做受欧美| 欧洲精品久久久| 亚洲美女视频网| 欧美日韩亚洲一区二区三区| 俺也去精品视频在线观看| 欧美日韩国产在线| 国产精品高潮呻吟久久av黑人| 国产精品视频成人| 国产69精品久久久久久| 欧美日韩在线看| 久久免费视频网| 在线成人中文字幕| 久久精品国产精品| 福利一区福利二区微拍刺激| 91免费观看网站| 亚洲一级黄色av| 狠狠躁天天躁日日躁欧美| www.久久草.com| 精品国产31久久久久久| 亚洲第一色在线| 日韩精品极品在线观看| 久久影视电视剧凤归四时歌| 欧美激情xxxx性bbbb| 亚洲永久在线观看| 成人免费网站在线观看| 人妖精品videosex性欧美| 岛国av一区二区在线在线观看| 精品国产一区av| 久久久久久久久久国产| 欧美黑人狂野猛交老妇| 日本欧美爱爱爱| 成人久久久久久久| 九九久久久久99精品| 亚洲精品一区中文字幕乱码| 456国产精品| 国产精品免费福利| 久久精品99久久香蕉国产色戒| 国产成人亚洲综合| 尤物九九久久国产精品的分类| 国产婷婷成人久久av免费高清| 国产婷婷97碰碰久久人人蜜臀| 日韩在线观看网址| 国产99视频精品免视看7| 国产精品久久久久久久久久久不卡| 国产精品久久久久久亚洲影视| 亚洲欧美日韩国产中文专区| 国产极品精品在线观看| 国产精品老女人视频| 久久精品亚洲热| 国产成人一区二区在线| 久久亚洲精品国产亚洲老地址| 亚洲成人在线网| 少妇高潮久久77777| 成人夜晚看av| www.日韩免费| 亚洲天天在线日亚洲洲精| 91在线观看免费| 精品久久香蕉国产线看观看gif| 国内精品小视频| 欧美激情亚洲一区| 岛国av午夜精品| 国产一区二区三区视频在线观看| 日韩中文字幕在线免费观看| 91精品国产综合久久香蕉922| 成人写真视频福利网| 国产精品91在线| 欧美日本精品在线| 国产做受高潮69| 日韩国产一区三区| 欧美性猛交xxxx富婆弯腰| 成人h猎奇视频网站|