深入理解Java中包的定義與使用
包是什么?
在開發(fā)過(guò)程中,會(huì)定義很多類,隨著類越寫越多,難免會(huì)出現(xiàn)類重名而發(fā)生覆蓋的情況,為了在使用它們的時(shí)候不讓編譯器混淆,我們給類加上一個(gè)限定 (前綴),把所有java程序保存在各自的目錄里面,而該目錄就是包,包的本質(zhì)實(shí)際上就是一個(gè)文件夾
即:把它們放在不同的包里面,調(diào)用時(shí)再加上前綴即可;這樣好處是對(duì)同名的類進(jìn)行了區(qū)分;能精確指出我們需要的哪一個(gè);讓同名的類在一個(gè)程序中可以共存
在Java中,包是對(duì)類、接口等的封裝機(jī)制的體現(xiàn),是一種對(duì)類或接口等的很好的組織方式
包的作用
在同一個(gè)工程中允許存在相同名稱的類,只要處在不同的包中即可
避免了類型之間命名沖突:包作為一種封裝,給類提供多層命名空間
導(dǎo)入包中的類
以導(dǎo)入時(shí)間戳為例:
方法1 使用類的全路徑
public class PackageTest {
public static void main(String[] args) {
java.util.Date time = new java.util.Date();
System.out.println(time.getTime());
java.util.Date time2 = new java.util.Date();
System.out.println(time2.getTime());
}
}
優(yōu)點(diǎn):一定不會(huì)發(fā)生沖突
缺點(diǎn):使用麻煩,每 new 一個(gè)對(duì)象都需要
方法2 導(dǎo)入包
可直接使用 import java.util.*,導(dǎo)入util 里的所有類
import java.util.Date;
public class PackageTest {
public static void main(String[] args) {
Date time3 = new Date();
System.out.println(time3.getTime());
Date time4 = new Date();
System.out.println(time4.getTime());
}
}
舉例:

上述示例:不明確 Date 到底是 sql 中的類,還是 util 中的類
解決方法:使用方式一包的全路徑即可~
優(yōu)點(diǎn):使用方便
缺點(diǎn):可能會(huì)產(chǎn)生沖突
方法3 靜態(tài)導(dǎo)入包
類里若存在同名的靜態(tài)方法,也有可能會(huì)發(fā)生沖突、
//可以直接使用Math類中的所有靜態(tài)成員
import static java.lang.Math.*;
public class PackageTest {
public static void main(String[] args) {
System.out.println(sqrt(100));
System.out.println(max(1,5));
System.out.println(min(6,7));
}
}
總結(jié):一個(gè)完整類名是包名+類名,在沒有 import 導(dǎo)入的情況下,使用一個(gè)類需要給出完整的類名
自定義包
操作步驟:
1.在 IDEA 中先新建一個(gè)包:右鍵 src → 新建 → 包


2.右鍵剛創(chuàng)建好的包→新建→類

輸入類名即可

3.找到相應(yīng)目錄 查看是否創(chuàng)建成功

4. Test.java 文件的最上方,出現(xiàn)了一個(gè) package 語(yǔ)句

包的訪問(wèn)權(quán)限控制
不同包

若手動(dòng)導(dǎo)入 Person 所在的包


到此這篇關(guān)于深入理解Java中包的定義與使用的文章就介紹到這了,更多相關(guān)Java 包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于重寫equals()方法和hashCode()方法及其簡(jiǎn)單的應(yīng)用
這篇文章主要介紹了關(guān)于重寫equals()方法和hashCode()方法及其簡(jiǎn)單的應(yīng)用,網(wǎng)上的知識(shí)有些可能是錯(cuò)誤的,關(guān)于?equals()?方法的理解,大家討論不一樣,需要的朋友可以參考下2023-04-04
SpringBoot整合任務(wù)系統(tǒng)quartz和SpringTask的方法
這篇文章主要介紹了SpringBoot整合任務(wù)系統(tǒng)(quartz和SpringTask),Quartz是一個(gè)比較成熟了的定時(shí)任務(wù)框架,但是捏,它稍微的有些許繁瑣,本文先給大家講解下Quartz的一些基本概念結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10
Mybatis useGeneratedKeys參數(shù)用法及問(wèn)題小結(jié)
這篇文章主要介紹了Mybatis useGeneratedKeys參數(shù)用法及遇到的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
Java Synchronized鎖升級(jí)原理及過(guò)程剖析
這篇文章主要為大家詳細(xì)介紹一下Java中Synchronized鎖升級(jí)原理及過(guò)程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)2022-08-08
Java中IO流之字符流與字節(jié)流的轉(zhuǎn)換方式
在Java中,字節(jié)流與字符流是處理數(shù)據(jù)的兩種方式,字節(jié)流適用于處理各種數(shù)據(jù)類型,如圖片、音頻等非文本數(shù)據(jù),而字符流專門用于處理文本數(shù)據(jù),Java提供了InputStreamReader和OutputStreamWriter這兩個(gè)類來(lái)實(shí)現(xiàn)字節(jié)流向字符流的轉(zhuǎn)換2024-10-10
SpringBoot中jar啟動(dòng)下如何讀取文件路徑
這篇文章主要介紹了SpringBoot?jar啟動(dòng)下如何讀取文件路徑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Java之判斷2000~2023年有哪些年份是閏年并打印輸出
這篇文章主要介紹了Java之判斷2000~2023年有哪些年份是閏年并打印輸出,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
springboot實(shí)現(xiàn)郵箱發(fā)送(激活碼)功能的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用springboot實(shí)現(xiàn)郵箱發(fā)送(激活碼)功能,文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
SpringCloud Finchley Gateway 緩存請(qǐng)求Body和Form表單的實(shí)現(xiàn)
在接入Spring-Cloud-Gateway時(shí),可能有需求進(jìn)行緩存Json-Body數(shù)據(jù)或者Form-Urlencoded數(shù)據(jù)的情況。這篇文章主要介紹了SpringCloud Finchley Gateway 緩存請(qǐng)求Body和Form表單的實(shí)現(xiàn),感興趣的小伙伴們可以參考一下2019-01-01

