最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析Java的包(package)

 更新時間:2015年09月26日 16:41:45   投稿:goldensun  
這篇文章主要介紹了深入解析Java的包(package),是Java入門學習中的基礎(chǔ)知識,需要的朋友可以參考下

雖然 Java 語言是典型的面向?qū)ο缶幊陶Z言,但其中的八種基本數(shù)據(jù)類型并不支持面向?qū)ο缶幊?,基本類型的?shù)據(jù)不具備“對象”的特性——不攜帶屬性、沒有方法可調(diào)用。 沿用它們只是為了迎合人類根深蒂固的習慣,并的確能簡單、有效地進行常規(guī)數(shù)據(jù)處理。

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

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

基本類型和對應的包裝類可以相互裝換:
由基本類型向?qū)陌b類轉(zhuǎn)換稱為裝箱,例如把 int 包裝成 Integer 類的對象;
包裝類向?qū)幕绢愋娃D(zhuǎn)換稱為拆箱,例如把 Integer 類的對象重新簡化為 int。
包裝類的應用

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

可以通過 Integer 類的構(gòu)造方法將 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));
  }
}

運行結(jié)果:

n = 500
obj 等價于 obj1?true



2) 將字符串轉(zhuǎn)換為整數(shù)

Integer 類有一個靜態(tài)的 paseInt() 方法,可以將字符串轉(zhuǎn)換為整數(shù),語法為:

parseInt(String s, int radix);


s 為要轉(zhuǎn)換的字符串,radix 為進制,可選,默認為十進制。

下面的代碼將會告訴你什么樣的字符串可以轉(zhuǎn)換為整數(shù):

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 + " 可以轉(zhuǎn)換為整數(shù) " + m);
      }catch(Exception e){
        System.out.println(str1 + " 無法轉(zhuǎn)換為整數(shù)");
      }
    }
  }
}

運行結(jié)果:

123 可以轉(zhuǎn)換為整數(shù) 123
123abc 無法轉(zhuǎn)換為整數(shù)
abc123 無法轉(zhuǎn)換為整數(shù)
abcxyz 無法轉(zhuǎn)換為整數(shù)


3) 將整數(shù)轉(zhuǎn)換為字符串

Integer 類有一個靜態(tài)的 toString() 方法,可以將整數(shù)轉(zhuǎn)換為字符串。例如:

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


運行結(jié)果:

s = 500


自動拆箱和裝箱

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

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

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));
  }
}

運行結(jié)果:

n = 500
obj 等價于 obj1?true

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


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

目錄以"\"來表示層級關(guān)系,例如 E:\Java\workspace\Demo\bin\p1\p2\Test.java。

包以"."來表示層級關(guān)系,例如 p1.p2.Test 表示的目錄為 \p1\p2\Test.class。
如何實現(xiàn)包

通過 package 關(guān)鍵字可以聲明一個包,例如:
 

  package p1.p2;

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

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

表明 Test 類位于 p1.p2 包中。
包的調(diào)用

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

程序舉例:

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

運行結(jié)果:

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);
  }
}


運行結(jié)果與上面相同。

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

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

首先在 E:\Java\workspace\Demo\src\p0\ 目錄(E:\Java\workspace\Demo\src\ 是項目源文件的根目錄)下創(chuàng)建 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 目錄下創(chuàng)建 Test.java,輸入如下代碼:

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

假設我們將 classpath 環(huán)境變量設置為 .;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 文件,如果不存在,會繼續(xù)檢索 D:\Program Files\jdk1.7.0_71\lib\p1\p2\ 目錄,兩個目錄下都不存在就會報錯。顯然,Test.java 位于 E:\Java\workspace\Demo\src\p1\p2\ 目錄,編譯器找不到,會報錯,怎么辦呢?

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

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

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

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

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

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

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

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

相關(guān)文章

  • java實現(xiàn)簡單音樂播放器

    java實現(xiàn)簡單音樂播放器

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單音樂播放器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Spring Boot分段處理List集合多線程批量插入數(shù)據(jù)的解決方案

    Spring Boot分段處理List集合多線程批量插入數(shù)據(jù)的解決方案

    大數(shù)據(jù)量的List集合,需要把List集合中的數(shù)據(jù)批量插入數(shù)據(jù)庫中,本文給大家介紹Spring Boot分段處理List集合多線程批量插入數(shù)據(jù)的解決方案,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • 分布式事務CAP兩階段提交及三階段提交詳解

    分布式事務CAP兩階段提交及三階段提交詳解

    這篇文章主要為大家介紹了分布式事務CAP、兩階段提交及三階段提交的內(nèi)容詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-01-01
  • Java Swing組件BoxLayout布局用法示例

    Java Swing組件BoxLayout布局用法示例

    這篇文章主要介紹了Java Swing組件BoxLayout布局用法,結(jié)合實例形式分析了Swing使用BoxLayout容器進行布局的相關(guān)方法與操作技巧,需要的朋友可以參考下
    2017-11-11
  • Java 多線程傳值的四種方法

    Java 多線程傳值的四種方法

    這篇文章主要介紹了Java 多線程傳值的四種方法,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-09-09
  • javafx tableview鼠標觸發(fā)更新屬性詳解

    javafx tableview鼠標觸發(fā)更新屬性詳解

    這篇文章主要為大家詳細介紹了javafx tableview鼠標觸發(fā)更新屬性的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • java并發(fā)中DelayQueue延遲隊列原理剖析

    java并發(fā)中DelayQueue延遲隊列原理剖析

    DelayQueue隊列是一個延遲隊列,本文將結(jié)合實例代碼,詳細的介紹DelayQueue延遲隊列的源碼分析,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Java中的重要核心知識點之繼承詳解

    Java中的重要核心知識點之繼承詳解

    繼承是java面向?qū)ο缶幊碳夹g(shù)的一塊基石,因為它允許創(chuàng)建分等級層次的類。繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為
    2021-10-10
  • Java實現(xiàn)redis分布式鎖的三種方式

    Java實現(xiàn)redis分布式鎖的三種方式

    本文主要介紹了Java實現(xiàn)redis分布式鎖的三種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Spring AOP攔截-三種方式實現(xiàn)自動代理詳解

    Spring AOP攔截-三種方式實現(xiàn)自動代理詳解

    這篇文章主要介紹了Spring AOP攔截-三種方式實現(xiàn)自動代理詳解,還是比較不錯的,這里分享給大家,供需要的朋友參考。
    2017-11-11

最新評論

兴山县| 都匀市| 商都县| 桃园市| 平舆县| 宜宾县| 威远县| 庐江县| 苏尼特左旗| 越西县| 台前县| 古丈县| 故城县| 揭东县| 睢宁县| 黎平县| 离岛区| 泽州县| 湖口县| 资源县| 元朗区| 三门县| 江北区| 正安县| 乐至县| 永年县| 凌源市| 桦川县| 长泰县| 济宁市| 清原| 伊金霍洛旗| 赤壁市| 民丰县| 沈阳市| 兴国县| 泌阳县| 大石桥市| 灵石县| 汶川县| 武穴市|