日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

包+类导入+静态导入+类放入包中+包作用域

發布時間:2023/12/3 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 包+类导入+静态导入+类放入包中+包作用域 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【0】README

0.1)本文轉自 core java volume 1, 旨在理清 包和類導入的相關知識;


【1】 包

1.1) java 允許使用包將類組織起來,包可以方便組織代碼,并將自己的代碼與別人提供的代碼庫分開管理;
1.2) 標準的java 類庫分別在多個包中, 包括 java.lang、java.util 和java.net;所有標準的 java 包都處于java 和 javax 包層次中;
1.3) 使用包的主要原因是確保類名的唯一性;且為了保證包名的絕對唯一,Sun 公司建議將公司的因特網域名以逆序的形式作為包名;


【2】 類的導入

2.1)一個類可以使用所屬包中的所有類,以及其他包中的共有類;
2.2)我們可以采用兩種方式訪問另一個包中的公有類:

  • 第一種方式是: 在類名之前添加完整的包名; java.util.Date today = new java.util.Date();
  • 第二種方式是:更簡單的方式是 使用import 語句;

Attention)需要注意的是, 只能使用星號(*)導入一個包, 而不能使用 import java.* 或 import java.*.* 導入以 java為前綴的所有包;
2.3)出現的問題+解決方法:當類名發生命名沖突的時候,就要注意包名, 看個荔枝:
如,java.util 和 java.sql 都有日期類Date, 如果導入了兩個包:

import java.util.* ; import java.sql.*;
  • 2.3.1)問題: 那么在程序中使用的Date類的時候,就會出現編譯錯誤;
  • 2.3.1)解決方法: 此時編譯器無法確定程序使用的是哪一個Date 類;可以增加一個 import語句來解決這個問題:
import java.util.* ; import java.sql.*; import java.util.Date ;
  • 2.3.2)問題: 如果這兩個 Date 類都需要使用;
  • 2.3.2)解決方法: 在每個類名的前面加上完整的包名:
java.util.Date today = new java.util.Date(); java.sql.Date today = new java.sql.Date();

在包中定位類是編譯器的工作, 類文件中的字節碼肯定使用完整的包名來引用其他類;


【3】 靜態導入

3.1) import語句不僅可以導入類,還增加了導入靜態方法和靜態域的功能;
3.2)看個荔枝(導入靜態域 和 靜態方法):
如,添加一條指令, import static java.lang.System.*; 就可以使用 System類的靜態方法和靜態域, 而不必加類名前綴:

out.println("hello, world"); exit(0);

3.3)看個荔枝(導入特定的方法和域):

import static java.lang.Math.sqrt; import static java.lang.Math.pow; import static java.lang.System.out;public static void main(String[] args){double aDouble;aDouble = sqrt(4);out.printf("%4f", pow(aDouble, 2));}


我們還可以看到 sqrt(pow(x, 2) + pow(y, 2)) 看起來要比 Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) 清晰多了;


【4】 將類放入包中

4.1)要想將類放入包中, 就必須將包的名字放在源文件的開頭, 包中定義類的代碼之前;
4.2)默認包:如果沒有在 源文件中放置 package 語句, 這個源文件的類就被放置在默認包中;
4.3)將包中的文件放到與完整包名匹配的子目錄中, 如, com.horstmann.corejava 包中的所有源文件應該被放置在 子目錄 com/hosrtman/corejava 中;編譯器將類文件也放在相同的目錄結構中;
4.4)需要注意: 編譯器對文件(帶有文件分隔符 和 擴展名.java 的文件)進行操作, 而java 解釋器加載類(帶有點(.)分隔符), 如(.號 和 /號 的區別)

javac com/mycompany/Pay.java java com.mycompany.Pay.java

Alert)編譯器在編譯源文件的時候不檢查目錄結構(但該程序卻無法運行):
如, 假定有一個源文件開頭有下列語句: package com.mycompany;即使這個源文件沒有在子目錄 com/mycompany 下,也可以進行編譯;如果它不依賴于其他包, 就不會出現編譯錯誤。但是,最終的出程序將無法運行,因為虛擬機找不到類文件;


【5】包的作用域

1)如果沒有指定 public 或 private, 那么這個部分(類、方法或變量)可以被同一個包中的所有方法訪問;
Attention)

  • A1) JDK 的實現者修改了類加載器, 明確禁止加載用戶自定義的、包名以“java.” 開始的類!
  • A2)可以通過 包密封機制 來解決將各種包混雜在一起的問題, 如果將一個包密封起來,就不能再向這個包添加類了;( 制作包含密封包的 JAR 文件的方法)
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的包+类导入+静态导入+类放入包中+包作用域的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。