<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java 包 原文:http://zetcode.com/lang/java/packages/ 在 Java 教程的這一部分中,我們將討論 Java 包。 包是一組相關類型的組合,提供訪問保護和名稱空間管理。 Java 中的包與 C# 中的名稱空間類似。 ## 使用 Java 創建包 使用`package`關鍵字聲明包。 該語句必須放在每個源文件的頂部。 每個源文件中只能有一個這樣的語句。 Java 源文件必須放在與包名稱匹配的目錄中。 ```java package com.zetcode; ``` 使用上述包的文件中定義的所有類型都是`com.zetcode`包的一部分。 類`Being`具有完全限定的名稱`com.zetcode.Being`。 全球有數百萬的 Java 程序員。 為避免潛在的名稱沖突,Java 中有一個命名約定。 包名稱使用反向互聯網域名。 字母以小寫字母書寫。 只能有一個`zetcode.com`域名,因此對于包使用反向名稱`com.zetcode`將使它們唯一。 帶有`com.zetcode`包的 Java 源文件必須位于`com/zetcode`子目錄中。 包名稱以小寫形式編寫,以避免與類或接口的名稱沖突。 `import`關鍵字在源文件的開頭用于指定類型(類,接口,枚舉或注解)或以后要引用的整個 Java 包,而不在引用中包含它們的包名稱。 從 Java SE 5.0 開始,`import`語句可以導入類的靜態成員(方法和變量)。 ```java import java.awt.*; ``` 使用*通配符,我們可以一次導入整個包。 導入后,我們可以引用所有`java.awt`包類型,而無需使用其全限定名。 ```java import java.awt.event.*; ``` `java.awt.event`子包未隨`java.awt.*`導入一起導入。 子包必須獨立導入。 ```java import java.util.Random; ``` 在這種情況下,僅導入`Random`類。 現在可以使用其簡單的類名來引用`Random`類。 ## Java8 中的核心包 以下是 Java8 中的核心包的列表: * `java.lang` — 基本語言功能和基本類型 * `java.util` — 集合數據結構類 * `java.io` - 用于文件操作的 Java API * `java.math` — 多精度算術 * `java.nio` — Java 的非阻塞 I/O 框架 * `java.net` — 網絡操作,套接字,DNS 查找,... * `java.security` — 密鑰生成,加密和解密 * `java.sql` — 用于訪問數據庫的 Java 數據庫連接(JDBC) * `java.awt` — 本機 GUI 組件的基本包層次結構 * `javax.swing` — 與平臺無關的豐富 GUI 組件的包層次結構 * `java.applet` - 用于創建小程序的類 * `java.beans` - 包含與開發 bean 有關的類-基于 JavaBean 架構的組件。 * `java.text` — 提供用于以獨立于自然語言的方式處理文本,日期,數字和消息的類和接口。 * `java.rmi` — 用于遠程方法調用的 Java API。 * `java.time` — 日期,時間,瞬間和持續時間的主要 API。 `java.lang`包不使用導入語句即可使用。 ## 實際例子 以下示例顯示了如何創建包和導入類型。 `Packages.java` ```java package com.zetcode; import java.util.Random; public class Packages { public static void main(String[] args) { Random r = new Random(); int x = r.nextInt(); System.out.println(x); java.util.Calendar c = java.util.Calendar.getInstance(); System.out.println(c.getTime()); } } ``` 該示例使用兩種類型:`Random`類和`Calendar`類。 第一類是導入的,第二類是由其完全限定的名稱引用的。 ```java package com.zetcode; ``` 我們用`package`關鍵字聲明一個包。 `Packages.java`文件必須位于`com/zetcode`子目錄中。 ```java import java.util.Random; ``` 此代碼行使我們可以使用不帶包名稱的`Random`類。 ```java Random r = new Random(); ``` 在這里,我們使用`Random`而不使用其全名。 ```java java.util.Calendar c = java.util.Calendar.getInstance(); ``` 如果我們沒有在類型上使用`import`關鍵字,則在本例中只能使用其全名-`java.util.Calendar`來引用它。 `import`關鍵字可以節省很多打字時間。 ```java $ ls com/zetcode/ Packages.java ``` `Packages.java`源文件位于`com/zetcode`子目錄中。 包名稱必須反映目錄結構。 ```java $ javac com/zetcode/Packages.java ``` 我們使用`javac`工具編譯源文件。 該工具從`com/zetcode`目錄的父目錄中調用。 ```java $ java com.zetcode.Packages 179489124 Thu Jan 19 20:53:08 CET 2017 ``` 這是`com.zetcode.Packages`程序的輸出。 ## Java 包級別可見性 如果我們未指定任何訪問修飾符(例如`private`,`protected`或`public`),那么我們將獲得包私有的可見性。 在這種情況下,變量和方法可在同一包中訪問。 其他包中的類無法訪問通過包私有訪問聲明的類和成員。 ## Java 默認包 如果未聲明任何包,則該文件中定義的所有類型都是默認未命名包的一部分。 建議始終將您的類型放在包裝中。 即使是小型程序。 `DefaultPackage.java` ```java public class DefaultPackage { public static void main(String[] args) { System.out.println("A class in a default package"); } } ``` `DefaultPackage`類是默認包的一部分。 ```java $ ls DefaultPackage.java ``` 如果未指定包,則不會將源文件放置在特定的子目錄中。 ```java $ javac DefaultPackage.java $ java DefaultPackage A class in a default package ``` 我們編譯代碼并運行應用。 源文件和字節碼位于當前工作目錄中。 ## Java 自動導入 Java 編譯器自動導入兩個包:`java.lang`和當前包。 `Constants.java` ```java package com.zetcode; public class Constants { public static final String version = "1.0"; } ``` `Constants`類與引用其版本成員的`AutomaticImports`位于同一包中。 `AutomaticImports.java` ```java package com.zetcode; public class AutomaticImports { public static void main(String[] args) { String os = System.getProperty("os.name"); System.out.println(os); System.out.println(Constants.version); } } ``` 在此示例中,我們引用了 Java 編譯器自動導入的一些類。 ```java String os = System.getProperty("os.name"); ``` `String`和`System`類是`java.lang`包的一部分。 ```java System.out.println(Constants.version); ``` `Constants`類與`AutomaticImports`類位于同一包中。 因此,我們可以訪問類及其成員,而無需使用完全限定的名稱或使用`import`關鍵字。 ```java $ ls com/zetcode/ AutomaticImports.java Constants.java ``` `AutomaticImports.java`和`Constants.java`文件都位于同一子目錄中。 ```java $ javac com/zetcode/AutomaticImports.java com/zetcode/Constants.java ``` 這兩個文件都被編譯。 ```java $ java com.zetcode.AutomaticImports Linux 1.0 ``` 這是`com.zetcode.AutomaticImports`程序的示例輸出。 ## Java 靜態導入 如果我們經常使用一些靜態成員,則可以稍后使用`import static`語句來引用它們,而無需使用完整的類名。 靜態導入應謹慎使用。 `StaticImport.java` ```java package com.zetcode; import static java.lang.Math.E; import static java.lang.Math.PI; import static java.lang.Math.abs; public class StaticImport { public static void main(String[] args) { System.out.println(E); System.out.println(PI); System.out.println(abs(-5)); } } ``` 在此示例中,我們引用兩個常量和一個靜態方法。 ```java import static java.lang.Math.E; import static java.lang.Math.PI; import static java.lang.Math.abs; ``` 我們使用`import static`語句啟用不帶全名的引用。 ```java System.out.println(E); System.out.println(PI); System.out.println(abs(-5)); ``` 我們引用這三個成員時沒有其類名。 ```java $ java com.zetcode.StaticImport 2.718281828459045 3.141592653589793 5 ``` 這是`com.zetcode.StaticImport`程序的輸出。 本章介紹了 Java 中的包。 我們已經展示了如何在包中組織代碼。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看