java的命名空间,java命名空間與命名

首先Java是被解釋執行的。它在運行時並不是將所有的class文件全都放到內存中。而是在遇到import的時候才去相應的文件目錄找相應的class文件。

對於一個public類,它是可以被項目中任何一個類所引用的,只需在使用它前import一下它所對應的class文件即可。將類名與文件名一一對應就可以方便虛擬機

在相應的路徑(包名)中找到相應的類的信息。如果不這么做的話,就很難去找,而且開銷也會很大。

名字可視性(Name visibility)

名字管理對任何程序設計語言來說,都是一個重要問題。如果你在程序的某個模塊里使用了

一個名字,而其他人在這個程序的另一個模塊里也使用了相同的名字,那么怎樣才能區分這

兩個名字並防止二者互相沖突呢?這個問題在 C 語言中尤其嚴重,因為程序往往包含許多

難以管理的名字。C++類( Java 類基於此)將函數包於其內,從而避免了與其它類中的函數名

沖突。然而,C++仍允許全局數據和全局函數的存在,所以還是有可能發生沖突。為了解決

這個問題,C++通過幾個關鍵字,引入了“名字空間”的概念。

Java 采用了一種全新的方法,能夠避免上述所有問題。為了給一個類庫生成不會與其它名字

混淆的名字,Java 采用了與 Internet域名相似的指定符。實際上,Java設計者希望程序員反

過來使用自己的 Internet域名,因為這樣可以保證它們肯定是獨一無二的。由於我的域名是

BruceEckel.com ,所以我的各種奇奇怪怪的應用工具類庫就被命名為

com.bruceeckel.utility.foibles。反轉域名后,句點就用來代表子目錄的划分。

設計者們發現這樣

做會引起一些問題,因此,現在整個包名都是小寫了。

Java2 的這種機制意味着所有的文件都能夠自動存活於它們自己的名字空間內,而且同一個

文件內的每個類都有唯一的標識符。所以不必學習特殊的語言知識來解決這個問題——Java

語言本身已經為你解決了這個問題。

根據反轉域名得到相應的命名空間的靈感

aHR0cDovL3N0YXRpYy5ibG9nLmNzZG4ubmV0L3hoZWRpdG9yL3hoZWRpdG9yX2Vtb3QvZGVmYXVsdC9sYXVnaC5naWY=

運用其它構件

如果你想在自己的程序里使用預先定義好的類,那么編譯器就必須知道怎么定位它們。當然,

這個類可能就在發出調用的那個源文件中;在這種情況下,你就可以直接使用這個類——即

使這個類在文件的后面才會被定義(Java 消除了“向前引用”問題,故不必考慮它)。

如果那個類位於其它文件中,又會怎樣呢?你可能會認為編譯器應該有足夠的智慧,能夠直

接找到它的位置。但事實並非如此。想象下面的情況,如果你想使用一個特定名字的類,但

其定義卻不止一份(假設這些定義各不相同)。更糟糕的是,假設你正在寫一個程序,在構

建過程中,你想將某個新類添加到類庫中,但卻與已有的某個類名沖突。

為了解決這個問題,你必須消除所有可能的混淆情況。為實現這個目的,你可以使用關鍵字

import 來准確地告訴編譯器你想要的類是什么。Import 指示編譯器導入一個包,也就是一

個類庫(在其它語言中,一個庫不僅包含類,還可能包括方法和數據;但是 Java 中的所有的

代碼都必須寫在類里)。

大多時候,我們使用與編譯器附在一起的 Java 標准類庫里的構件。有了這些構件,你就不

必寫一長串的反轉域名。舉例來說,只須像下面這么書寫就行了:

import java.util.ArrayList;

這行代碼告訴編譯器,你想使用 Java 的 ArrayList類。但是,util 包含了數量眾多的類,有

時你想使用其中的幾個,同時又不想明確地逐一聲明。那么你可以使用通配符“*”來很容

易地實現這個目的:

import java.util.*;

用這種方法一次導入一群類的方式倒是比一個一個地導入類的方式更常用。

在Java中,變量的作用域分為四個級別:類級、對象實例級、方法級、塊級。類級變量又稱全局級變量或靜態變量,需要使用static關鍵字修飾,你可以與 C/C++ 中的 static 變量對比學習。類級變量在類定義后就已經存在,占用內存空間,可以通過類名來訪問,不需要實例化。對象實例級變量就是成員變量,實例化后才會分配內存空間,才能訪問。方法級變量就是在方法內部定義的變量,就是局部變量。塊級變量就是定義在一個塊內部的變量,變量的生存周期就是這個塊,出了這個塊就消失了,比如 if、for 語句的塊。塊是指由大括號包圍的代碼,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值