-
1.將 i 定義為靜態,然後使用下面的語句呼叫它。
2.在下面的 getnum 中定義乙個 class1 的例項,例如 apublic static int getnum()class1 a = new class1(); 將空間分配給類 i,您將擁有乙個空間位址。
return = 2;
使用語句呼叫。
在 C 語言中,靜態型別的成員等效於其他語言中的全域性變數、全域性常量、全域性函式等。 在C語言中,它屬於類本身,類的任何其他成員都可以使用它,並且在生成類時沒有分配儲存空間,因此直接與“類名”一起使用。 成員名稱”。
非靜態成員必須屬於乙個類的例項,這些非靜態成員只有在例項生成後才會在例項中生成,訪問時使用“例項名稱”。 成員名稱”。
-
static 是指預先分配了空間的變數和方法。
class 是乙個動態分配空間的類,所以呼叫該類的第一件事就是用 new
因此,在預分配的空間 (getnum) 中呼叫沒有分配空間的類或變數是有問題的。
1.一種方法是將 int i; 重寫為靜態 int i;
這是一種將 i 定義為提前分配空間的變數的方法。
2.另一種方法是動態分配空間,即。
public static int getnum()
class1 c =new class1();將空間分配給類 i,您將擁有乙個空間位址。
return = 2;
-
因為 getnum 方法是靜態的,否則你可以刪除靜態。
-
在操作和效率方面沒有太大區別,但對於有抱負的程式設計師來說卻有很大的不同。
例項方法必須例項化乙個特定的物件才能被訪問,為了封裝起見,不允許該物件的成員變數被外部程式訪問,只允許例項方法訪問,即做**訪問隔離。 這種機制對於物件導向程式設計來說是必要和標準的。
但有時我們需要做一些資料處理,它是類的一部分,但是是泛型的,並且通常有一定數量的資料(封裝在方法函式中),並且它處理的資料與類中的其他成員變數無關。
在這種情況下,將方法封裝在類中很麻煩,並且存在以下幾個問題:
1.奇怪的是,處理後的資料與類的業務邏輯完全無關,而是封裝在類中,破壞了整體架構(導致邏輯鬆散)。
2.建立物件的過程太長(因為會頻繁呼叫很多不同的外部程式的地方,太麻煩了,強迫症患者也要注意每次都設定為空)。
3.難看,可讀性差(太多,容易視覺複雜)。
例如,如果您正在開發乙個資料庫系統並設計乙個類來處理資料庫日期和時間的訪問和顯示轉換(例如,以指定格式輸出),那麼現在假設它封裝了乙個用於檢查日期有效性的公共方法,該方法一方面為類成員服務,另一方面, 在許多情況下,例如通過使用者介面接受使用者輸入的日期,我們希望首先對其進行驗證。如果資料有效(包括其他資料),然後建立乙個資料物件來傳遞資料(因為建立物件的成本很高),那麼你就要呼叫類方法而不例項化,這是靜態方法的需求場景之一。
假設這個自定義日期類是 mydate,下面是偽**,日期 d;
d=getuidate();獲取介面的日期資料。
if ( 直接使用類名訪問靜態方法,而無需事先定義物件名和 new
其他處理**。
-
靜態方法,直接通過類名。 方法名稱。 靜態成員也是如此。
在**呼叫的情況下,沒有太大區別。
-
static 表示靜態,可以修飾類、字段、屬性、方法,但不能用於索引器、析構函式或類以外的型別。
如果它被標記為靜態,則無需建立例項物件即可呼叫它,您可以直接通過類名指出它。
1.在用於變數之前,這意味著每次重用變數所在的方法、類或自定義類時,變數的值是程式在此執行中最後一次為變數賦值的值靜態函式
2.它前面有乙個靜態方法(函式),以指示該方法由它所在的類或自定義類擁有,而不是由類的例項擁有靜態方法
案例一:非靜態方法:
案例 2:靜態方法:
3.在用於類之前,就意味著該型別不能建立乙個新例項,簡單來說,該型別的所有方法都是靜態方法,並且該類中的非靜態方法不能使用,該型別稱為靜態類
例如,C 控制台操作的 cancle 類的成員被標記為靜態,可以直接使用只要指出它並使用它。
如果未標記為靜態,則可以通過建立例項物件來呼叫它,例如,動態字串 stringbuilder 需要由新例項呼叫。
注:1儘管類的例項包含該類的所有例項欄位的單獨副本,但每個靜態字段只有乙個副本。
2.不能使用它來引用靜態方法或屬性訪問器。
3.如果將 static 關鍵字應用於某個類,則該類的所有成員都必須是靜態的。
4.類和靜態類可以具有靜態建構函式。 靜態建構函式在程式啟動和類例項化之間的某個時間點被呼叫。
靜態類:如果乙個類被宣告為靜態類,則它不能被例項化、繼承,也不能包含非靜態成員。
在非靜態類中,可以包含靜態成員。
靜態方法:靜態方法中無法訪問非靜態成員。
非靜態方法,可以同時呼叫靜態成員和非靜態成員。
靜態成員的生命週期是從程式的開始到程式的結束。
-
首先,我想問一下。 誰告訴你多久使用它一次?
這兩樣東西不能經常使用
靜態變數使用靜態修飾符宣告,靜態修飾符是在例項化類時建立的,通過沒有靜態修飾符宣告的類訪問的變數稱為非靜態變數。
例項化物件時會建立乙個靜態變數,通過該物件訪問的同乙個 c 靜態變數對於類的所有例項都是相同的值,而對於同一類的不同例項,同乙個非靜態變數可以具有不同的值。
不能在靜態函式的實現中使用非靜態成員。
c 靜態方法和屬性在程式啟動時全部載入到記憶體中,無論以後是否使用。 即使沒有人再訪問程式,這部分記憶體仍然不會被釋放,所有訪問者看到的靜態屬性的資料幾乎是一樣的,例如使用者 A 設定了使用者名稱屬性,當使用者 B 訪問時,獲取的使用者名稱仍然是使用者 A 設定的使用者名稱。 這種功能,如果用在固定資料中,問題不大,比如連線字串等等。
c 靜態方法 資料成員屬於類,而不是某個物件,因此不需要例項化它們來呼叫它們; 靜態方法和靜態資料成員等效於共享變數。 它對類中的所有物件都是通用的,因此在需要共享資料時定義此型別時,它是乙個不錯的選擇。 一旦定義了乙個類(不一定是例項化物件),該類的所有靜態成員都會被載入到記憶體中(程式啟動時不會載入到記憶體中,如果未定義類,則不會載入到記憶體中)靜態成員的作用域與其所屬類的作用域相同。
這意味著你的程式已經完成。 即使沒有例項化物件。 這些也存在於記憶體中。
因此,它對操作速度有很大影響(如果您將其用於大型專案)。
所以。 它不經常使用。
-
謹慎使用它,這個東西會在程式執行時新增到記憶體中(無論你是否訪問它)。
-
靜態類主要是共享的,靜態類的內部成員必須是靜態的。
靜態通常是在載入程式時構造的。
就我個人而言,我在程式配置部分使用靜態類最多的是,由於它的共享特性,需要以多種形式呼叫,最主要的是程式啟動時就初始化了。
靜態類可以有建構函式,但它們只被呼叫一次。
至於上面提到的程式的配置資料部分,如果使用非靜態類,那麼需要手動初始化它,然後才能隨時訪問它,並且還需要將其分配給靜態變數才能使用。
如果你需要在他構造之前的某個地方呼叫它,你還需要修改你構造他的位置。
系統會在使用完成後自動銷毀並釋放非靜態類,因此非靜態類相對安全,而靜態類在程式完成後銷毀並駐留在記憶體中直到銷毀,因此出錯的可能性會更大。
建議不要使用太多的靜態類,在正確的時間使用它們。
-
第一句話:靜態類和類成員用於建立無需建立類例項即可訪問的資料和函式。
由此我們可以得出結論,我們不需要例項來建立非靜態類,我們可以直接使用它。
句子 2:靜態類成員可用於分離獨立於任何物件標識的資料和行為:無論物件發生什麼,這些資料和函式都不會隨之更改。
我理解這句話的意思是,一旦建立了乙個靜態類,靜態類就會獨立於原來的實體,它們不會因為改變實體的方法而影響靜態類。
第 3 句:當類中沒有依賴於物件標識的資料或行為時,可以使用靜態類。
這句話把我吵醒了,他切入主題,告訴我們什麼時候可以宣告靜態,當我們的靜態類不依賴於主題並且它可以完全獨立時,我們可以宣告它是靜態的。
摘要:1 靜態類可以直接呼叫,不需要宣告實體。
2 靜態類不會因為主題的變化而影響主題。
3 只有當靜態類宣告不依賴於主體時,才能宣告它們。 介紹很清楚。 希望能有所幫助。
-
我給你舉個例子!!
靜態方法用於表示類的行為,而不是其物件的行為。
例如,將學生分配到班級的任務是所有學生作為乙個小組的事情,而不僅僅是單個學生的事情。
靜態方法是在定義中使用 static 關鍵字宣告的,該關鍵字位於修飾符和方法返回的型別之前,格式為:[Method Modification] static return value type 方法名稱(引數列表)。
注意:它的訪問關鍵字,即方法修飾符,與普通方法相同,但很少使用私有,因為通常需要外部類來訪問這些定義的靜態方法。
呼叫靜態方法時,不需要例項化類的物件,只需直接引用即可。 這就是靜態類和方法如此特別的原因,也是它們與普通類和方法的不同之處!
示例:下面給出了乙個使用靜態方法計算矩形面積的典型示例。
Rectangle 類。
/<\summary>
public class sqrt
上面的方法用靜態方法getarea()建立乙個類sqrt來計算乙個矩形的面積,使用起來非常簡單,這個靜態方法可以用下面的**來呼叫:
static void main(string args)
使用 sqrt 類直接引用此方法,而無需例項化矩形物件。
下面網友說得很對,這個靜態方法不能例項化,比如:
sqrt shili =new sqrt();
是錯誤的,首先是靜態方法描述的是集合體,而不是物件,因此無法例項化。
靜態成員:資料成員、方法成員和型別成員。 成員可以是常量、字段、物件等。
靜態字段需要使用靜態:
例如:static int total ;
靜態成員屬於類,因此請使用“類名”。 靜態字段”。
int i=200;
當然,c中還有其他的靜態成員,比如靜態方法!! 需要注意的是,靜態方法只能直接訪問靜態類!
靜態類:它仍然具有物件的抽象,並且可以將類宣告為靜態以指示它僅包含靜態成員。 不能使用 new 關鍵字建立靜態類的例項。
靜態類載入了 .將自動載入 .NET Framework 公共語言執行時 (CLR)。
靜態類功能:僅包含靜態成員。 無法例項化。 是密封的。 不能包含例項建構函式。
靜態類就像乙個容器,包含靜態方法、靜態字段、類使用的屬性、大量引數以及其他一些有助於完成任務的東西。 可以簡單地理解為乙個不能通過放置靜態方法和靜態屬性來例項化的類!
它可以是一樣的,沒有要求,最好不要使用相同的。 影響程式的可讀性。 不利於將來的修改和錯誤檢查。 你自己很難分辨出其中的區別,如果你想讓別人閱讀你的程式,那就更難理解了。