靜態域中的域是什麼意思?

  • 作者:由 匿名使用者 發表于 動漫
  • 2023-01-23

靜態域中的域是什麼意思?wuxiaoyu0413 2007-10-25

靜態成員變數可以脫離物件而存在,是類本身的屬性。所以對於任何物件來說,這個靜態成員都是存在的,類似物件間的全域性屬性。

相關資料

1、概念

在類定義中,如果一個域前面有static修飾符,則該域屬於整個類,而不單單屬於類的某個物件。這種域叫做靜態域(static fields),而不加static修飾符的域,做作非靜態域(non-static fields)。

可以為Point類增加一個靜態域numberOfPoints,代表已經用Point類生成的Point類的物件個數,其初值不妨設為0:

static int numberOfPoints = 0;這樣,numberOfPoints就是一個靜態域。編譯器在編譯原始碼時,就會為該類產生惟一的numberOfPoints域。即使沒有用Point類生成任何具體的物件,該numberOfPoints域也存在。今後該類的所有物件,都將共享這個域。

【例4】將例3的PointDemo2。java中的Point類增加一個靜態域numberOfPoints,代表已經用Point類生成的Point類的物件個數,改寫如下。為醒目起見,對改寫的語句增加了註釋。

class Point {

//增加了一個靜態域numberOfPoints,初值為0

static int numberOfPoints = 0;

int x;

int y;

//兩個建構函式如下,其中專門對numberOfPoints進行了加1操作

public Point(int newX, int newY) {

x = newX;

y = newY;

numberOfPoints++;

}

public Point() {

x = 0;

y = 0;

numberOfPoints++;

}

//以下方法不變

void setX(int newX) {

x = newX;

}

void setY(int newY) {

y = newY;

}

int getX() {

return x;

}

int getY() {

return y;

}

void printStates() {

System。out。println(“x=”+x+“, y=”+y);

}

}那麼,該怎樣使用靜態域?靜態域又有什麼用處呢?

2、使用靜態域

【例5】使用例4的Point類改寫PointDemo2。java為PointDemo3。java。為醒目起見,對改寫的語句增加了註釋。

import java。io。*;

//主類名自然變成了PointDemo3

class PointDemo3 {

public static void main(String[ ] args) {

Point p1 = new Point(23, 94);

p1。printStates();

System。out。println(“現在一共有” + Point。numberOfPoints + “個點”);

Point p2 = new Point();

p2。printStates();

System。out。println(“現在一共有” + Point。numberOfPoints + “個點”);

}

}

class Point {

……//例4中的Point類,為節省篇幅略

}程式的執行結果為:

x=23, y=94

現在一共有1個點

x=0, y=0

現在一共有2個點簡要講解:例5演示了靜態域的使用方法和簡單作用。在編譯程式時,系統為靜態域numberOfPoints分配記憶體空間,並賦值為0。在main方法中,首先聲明瞭一個Point類的引用物件p1,它呼叫Point類的建構函式Point()生成一個具體物件,在建構函式Point()中有這樣一句話:

numberOfPoints++;它把numberOfPoints自加1,所以在執行第一句:

System。out。println(“現在一共有” + Point。numberOfPoints + “個點”);時,系統輸出:

現在一共有1個點程式又聲明瞭一個Point類的引用物件p2,它呼叫Point類的建構函式Point(int, int)生成一個具體物件,在該建構函式Point()中也有這樣一句話:

numberOfPoints++;它又把numberOfPoints自加1,所以在執行第二句:

System。out。println(“現在一共有” + Point。numberOfPoints + “個點”);時,系統輸出:

現在一共有2個點可見,numberOfPoints域儲存了系統生成的點的個數,它是靜態域,被類的所有物件所共享,在用類生成具體物件前,就已經為它分配記憶體空間了;而x、y則是非靜態域,只有當用類生成具體物件時,才為非靜態域分配記憶體空間,並且類的每個物件各有一份。

本題的類和物件的各種域的形象表示如下圖所示。

在程式中是這樣使用numberOfPoints域的:

Point。numberOfPoints它體現了使用靜態域的一般格式:

類名。靜態域它使用了點運算子“。”。使用非靜態域的格式則是:

物件名。非靜態域例如,可以這樣輸出p1物件的x域值:

System。out。println(p1。x);點運算子“。”用於引用物件或類的域或方法。例如可以這樣呼叫方法:

System。out。println(p1。getX());它輸出p1物件的x域值。又如:

p2。printStates();它呼叫p2的printStates()方法,輸出p2的x、y域值。

注意,也可以用“物件名。靜態域”的形式使用靜態域,如可以這樣寫:

System。out。println(“現在一共有” + p2。numberOfPoints + “個點”);但一般不提倡這樣使用靜態域,因為無法從呼叫格式看出一個域是否是靜態域。

非靜態域則不能使用“類名。非靜態域”的形式,原因很簡單:非靜態域屬於各物件而不屬於類。

3、最終域

如果一個類的域被宣告為final,則它的取值在程式的整個執行過程都不會改變。如果在程式中試圖改變其值,則會出現編譯錯誤。

final修飾符經常和static修飾符結合使用,用於定義常量。例如,下面的變數宣告定義了PI常量,其值約等於圓周率:

static final double PI = 3。141592653589793;這樣定義的常量不能重新賦值,否則會發生編譯錯誤。一般來說,常量名應該全大寫。如果名字包含多個英文單詞,則各單詞之間用下劃線(_)分隔。

如果一個原資料型別或一個字串被定義為常量,並且在編譯時就知道它的值,編譯器會在程式碼中用具體值取代常量出現的位置。這叫做編譯時常量(compile-time constant)。如果外界常量的值發生了改變(例如圓周率變成了3。95),則在重新定義常量後,需要重新編譯使用該常量的所有類。

為了節省空間,常量一般宣告為static final或final static。

http://www。itsway。net/java/java030203。aspx

靜態域中的域是什麼意思?柒月黑瞳dae3 推薦於2016-08-24

域可以理解為記憶體空間。域(Domain)是Windows網路中獨立執行的單位,域之間相互訪問則需要建立信任關係(即Trust Relation)。信任關係是連線在域與域之間的橋樑。當一個域與其他域建立了信任關係後,2個域之間不但可以按需要相互進行管理,還可以跨網分配檔案和印表機等裝置資源,使不同的域之間實現網路資源的共享與管理。

域既是 Windows 網路作業系統的邏輯組織單元,也是Internet的邏輯組織單元,在 Windows 網路作業系統中,域是安全邊界。域管理員只能管理域的內部,除非其他的域顯式地賦予他管理許可權,他才能夠訪問或者管理其他的域;每個域都有自己的安全策略,以及它與其他域的安全信任關係。

域:域是一種管理邊界,用於一組計算機共享共用的安全資料庫,域實際上就是一組伺服器和工作站的集合。

域在檔案系統中,有時也稱做“欄位”,是指資料中不可再分的基本單元。一個域包含一個值。如學生的名字等。可以透過資料型別(如二進位制、字元、字串等)和長度(佔用的位元組數)兩個屬性對其進行描述。

域,在WORD文件中是一種可以發生變化的資料。他在頁面檢視中,與一般的文字看不出有什麼區別,但是,當游標移入域中,就會發現,整體域的底紋顏色變成灰色(約灰色-30%)

靜態域中的域是什麼意思?yiyiruo 2007-10-27

域可以理解為記憶體空間,因為靜態域被類的所有物件所共享,在用類生成具體物件前,就已經為它分配記憶體空間了

靜態域中的域是什麼意思?yi565088269 2007-10-25

靜態域就是這裡面的變數可以不用類來呼叫就可以直接使用,相當於一個常數

Top