java類的生命周期 類的靜態(tài)成員和非靜態(tài)成員有何區(qū)別?
類的靜態(tài)成員和非靜態(tài)成員有何區(qū)別?非靜態(tài)成員也稱為成員變量。它們之間的區(qū)別如下:1。成員變量也稱為實(shí)例變量;靜態(tài)變量也稱為類變量。2. 內(nèi)存存儲(chǔ)的區(qū)別在于成員變量存儲(chǔ)在堆內(nèi)存的對(duì)象中,靜態(tài)變量存儲(chǔ)在方
類的靜態(tài)成員和非靜態(tài)成員有何區(qū)別?
非靜態(tài)成員也稱為成員變量。它們之間的區(qū)別如下:
1。成員變量也稱為實(shí)例變量;靜態(tài)變量也稱為類變量。
2. 內(nèi)存存儲(chǔ)的區(qū)別在于成員變量存儲(chǔ)在堆內(nèi)存的對(duì)象中,靜態(tài)變量存儲(chǔ)在方法區(qū)的靜態(tài)區(qū)域中。
3. 根據(jù)primer第四版的解釋,靜態(tài)局部對(duì)象必須遵循“確保不遲于程序執(zhí)行過(guò)程第一次通過(guò)對(duì)象的定義語(yǔ)句時(shí)初始化”的原則。2同時(shí),我們知道類內(nèi)的執(zhí)行順序不是按行順序執(zhí)行的,而是按對(duì)象調(diào)用順序執(zhí)行的。三。以上兩種情況確定了一個(gè)問(wèn)題:如果在類中定義,則靜態(tài)數(shù)據(jù)成員無(wú)法初始化,或者在沒(méi)有創(chuàng)建對(duì)象時(shí)初始化時(shí)間太晚。[可能的原因之一]4。此外,靜態(tài)成員的生命周期是一旦建立,它們將存在于整個(gè)程序的生命周期中。這就是靜態(tài)數(shù)據(jù)成員屬于或不屬于類的原因。如果它們?cè)陬愔卸x,它們將成為類的成員。也就是說(shuō),在創(chuàng)建類的多個(gè)對(duì)象時(shí),會(huì)再次聲明和定義變量的位置,并且名稱空間和作用域是相同的,這就導(dǎo)致了名稱重復(fù)的問(wèn)題。因此,靜態(tài)成員需要獨(dú)立于類來(lái)定義。6實(shí)際上,不需要知道編譯器是如何實(shí)現(xiàn)這個(gè)規(guī)則的。因?yàn)檫@只是一張紙條。
c 類的靜態(tài)數(shù)據(jù)成員為什么不能在類內(nèi)定義?
1、名稱差異:成員變量也稱為實(shí)例變量;靜態(tài)變量也稱為類變量。2、 內(nèi)存存儲(chǔ)的區(qū)別:成員變量存儲(chǔ)在堆內(nèi)存的對(duì)象中,靜態(tài)變量存儲(chǔ)在方法區(qū)的靜態(tài)區(qū)域中。3、 生命周期不同:1)成員變量隨對(duì)象的出現(xiàn)而出現(xiàn),隨對(duì)象的消失而消失。2) 靜態(tài)變量隨著類的出現(xiàn)而出現(xiàn),隨著類的消失而消失。4、 補(bǔ)編:1。靜態(tài)變量用靜態(tài)修飾符聲明;2。它是在實(shí)例化類并通過(guò)沒(méi)有靜態(tài)修飾符的類訪問(wèn)時(shí)創(chuàng)建的。修飾符聲明的變量稱為非靜態(tài)變量;3。它是在實(shí)例化對(duì)象并通過(guò)對(duì)象訪問(wèn)時(shí)創(chuàng)建的;4。同一類的所有實(shí)例的同一靜態(tài)變量具有相同的值,同一類的不同實(shí)例的同一非靜態(tài)變量可以具有不同的值。非靜態(tài)成員(如非靜態(tài)變量和非靜態(tài)函數(shù))不能用于靜態(tài)函數(shù)的實(shí)現(xiàn)。6示例:1)使用系統(tǒng)
非靜態(tài)成員也稱為成員變量。兩者的區(qū)別如下:1。成員變量也稱為實(shí)例變量;靜態(tài)變量也稱為類變量。2內(nèi)存存儲(chǔ)的區(qū)別在于成員變量存儲(chǔ)在堆內(nèi)存的對(duì)象中,靜態(tài)變量存儲(chǔ)在方法區(qū)的靜態(tài)區(qū)域中。三。生命周期的不同成員變量隨著對(duì)象的出現(xiàn)而出現(xiàn),隨著對(duì)象的消失而消失。靜態(tài)變量隨著類的出現(xiàn)而出現(xiàn),隨著類的消失而消失。靜態(tài)數(shù)據(jù)成員與普通數(shù)據(jù)成員的區(qū)別在于:(1)普通數(shù)據(jù)成員屬于類的特定對(duì)象。只有在創(chuàng)建對(duì)象時(shí),才能為普通數(shù)據(jù)成員分配內(nèi)存。靜態(tài)數(shù)據(jù)成員屬于整個(gè)類,即使沒(méi)有創(chuàng)建對(duì)象,該類的靜態(tài)數(shù)據(jù)成員變量也存在。(2) 因?yàn)轭惖撵o態(tài)數(shù)據(jù)成員的存在不依賴于任何類對(duì)象的存在,所以類的靜態(tài)數(shù)據(jù)成員應(yīng)該在代碼中顯式初始化,通常在類之外,例如上面的示例。在c11標(biāo)準(zhǔn)中,我們可以在const integer類型的類中為靜態(tài)成員提供初始值,但是要求靜態(tài)成員必須是literal constant類型的constexpr(來(lái)自C primer中文版,第270頁(yè))。