當前位置:才華齋>計算機>java語言>

Java語言的作用域有哪些及分類知識

java語言 閱讀(2.46W)

【提要】本篇《Java語言的作用域有哪些及如何分類【1】》特別為需要語言程式設計學習的朋友收集整理的,僅供參考。內容如下:

Java語言的作用域有哪些及分類知識

Java已經成為一個龐大而複雜的技術平臺,對於開發人員而言,要想更好的掌握Java技術,深入理解底層的技術處理細節必不可少。以下是關於Java語言的作用域及分類的內容,歡迎閱讀!Java語言的作用域有哪些及如何分類

在程式原始碼中,宣告在不同地方的變數具有不同的作用域,例如:區域性變數、全域性變數等。在Java語言中,作用域是由花括號“{...}”的位置決定的,它決定了其定義的變數名的可見性與生命週期。

在Java語言中,變數型別主要有三種:成員變數、靜態變數和區域性變數。

類的成員變數的作用範圍與類的例項化物件的作用範圍相同,當類被例項化時,成員變數就會在記憶體中分配空間並初始化,直到這個被例項化物件的生命週期結束時,成員變數的生命週期才結束。

被 static修飾的成員變數稱為靜態變數或全域性變數,與成員變數不同的是,靜態變數不依賴於 特定的例項,而是被所有例項所共享,也就是說,只要一個類被載入,JVM就會給類的靜態變數分配儲存空間。因此,可以通過類名和變數名來訪問靜態變數。

區域性變數的作用域與可見性為它所在的花括號內。

此外,成員變數也有四種作用域,它們的區別見下表。

(1)public。表明該成員變數或方法對所有類或物件都是可見的,所有類或物件都可以直 接訪問。

(2)private。表明該成員變數或方法是私有的,只有當前類對其具有訪問許可權,除此之外 的其他類或者物件都沒有訪問許可權。

(3)protected。表明該成員變數或方法對自己及其子類是可見的,即自己和子類具有許可權 訪問。除此之外的其他類或物件都沒有訪問許可權。

(4)default。表明該成員變數或方法只有自己和與其位於同一包內的類可見。若父類與子 類位於同一個包內,則子類對父類的default成員變數或方法都有訪問許可權;若父類與子類位 於不同的package (包)內,則沒有訪問許可權。

需要注意的是,這些修飾符只能修飾成員變數,不能用來修飾區域性變數。private與protected 不能用來修飾類 (只有 public 、abstract 或 final 能用來修飾類)。【相關閱讀】Java四大核心技術詳解

1Java虛擬機器

Java虛擬機器的.主要任務是裝在class檔案並且執行其中的位元組碼。Java虛擬機器包含一個類裝載器,它可以從程式和API中裝載class檔案。Java API中只有程式執行時需要的那些類才會被裝載。位元組碼由執行引擎來執行。

不同的Java虛擬機器中,執行引擎可能實現得非常不同。在由軟體實現的虛擬機器中,最簡單的執行引擎就是一次性解釋位元組碼。另一種執行引擎更快,但是也更消耗記憶體,叫做"即時編譯器(just-in- time compiler)"。在這種情況下,第一次被執行的位元組碼會被編譯成本地機器程式碼。編譯出的本地機器程式碼會被快取,當方法以後被呼叫的時候可以重用。第三種執行引擎是自適應優化器。在這種方法裡,虛擬機器開始的時候解釋位元組碼 但是會監視執行中程式的活動,並且記錄下使用最頻繁的程式碼段。程式執行的時候,虛擬機器只把那些活動最頻繁的程式碼編譯成原生代碼,其他的程式碼由於使用得不是很頻繁,繼續保留為位元組碼-由虛擬機器繼續解釋它們。一個自適應的優化器可以使得Java虛擬機器在80%~90%的時間裡執行被優化過的原生代碼,而只需要編譯10%~20%的對效能有影響的程式碼。

當Java虛擬機器是由主機作業系統上的軟體實現的時候,Java程式通過呼叫本地方法(native method)和主機互動。Java中有兩種方法: Java方法和本地方法。Java方法是由Java語言編寫,編譯成位元組碼檔案,儲存在class檔案中的。本地方法是由其他語言(比如c,c++或組合語言)編寫的,編譯成何處理器相關的機器程式碼。本地方法儲存在動態連結庫中,格式是各個平臺專有的。執行中Java程式呼叫本地方法時,虛擬機器裝載包含這個本地方法的動態庫,並呼叫這個方法。本地方法是聯絡Java程式和底層主機作業系統的連線方法。

通過本地方法,Java程式可以直接訪問底層作業系統的資源。一個本地方法介面(Java Native Interface, JNI)-使得本地方法可以在特定主機系統的任何一個Java平臺實現上執行。

如果希望使用特定主機上的資源,它們又無法從Java API訪問,那麼可以寫一個平臺相關的Java程式來呼叫本地方法。如果希望保證程式的平臺無關性,那麼只能通過Java API來訪問底層系統資源。

2類裝載器的體系結構

一個Java應用程式可以使用兩種類裝載器:"啟動(bootstrap)"類裝載器和使用者定義的類裝載器。啟動類裝載器(這是系統中唯一的)是Java虛擬機器實現的一部分。啟動類裝載器通常使用某種預設方式從 本地磁碟中裝載類,包括Java API類。