java定義靜態(tài)常量 簡(jiǎn)述常量和靜態(tài)變量區(qū)別,何時(shí)用?
簡(jiǎn)述常量和靜態(tài)變量區(qū)別,何時(shí)用?Java中靜態(tài)常量和靜態(tài)變量的區(qū)別是不同的:靜態(tài)變量屬于類,所以也稱為類變量;成員變量屬于對(duì)象,所以也稱為實(shí)例變量(object variable)。它在內(nèi)存中的位置不
簡(jiǎn)述常量和靜態(tài)變量區(qū)別,何時(shí)用?
Java中靜態(tài)常量和靜態(tài)變量的區(qū)別是不同的:靜態(tài)變量屬于類,所以也稱為類變量;成員變量屬于對(duì)象,所以也稱為實(shí)例變量(object variable)。它在內(nèi)存中的位置不同:靜態(tài)變量存儲(chǔ)在方法區(qū)的靜態(tài)區(qū);成員變量存儲(chǔ)在堆內(nèi)存區(qū);成員變量隨著對(duì)象(又稱實(shí)例)的創(chuàng)建而存在,隨著對(duì)象的消失而消失。靜態(tài)變量可以通過類名或?qū)ο笳{(diào)用;成員變量只能通過對(duì)象名調(diào)用。靜態(tài)方法中沒有this關(guān)鍵字。如何理解?非靜態(tài)方法可以同時(shí)調(diào)用靜態(tài)和非靜態(tài)成員變量;非靜態(tài)方法可以同時(shí)調(diào)用靜態(tài)和非靜態(tài)成員方法。
簡(jiǎn)述常量和靜態(tài)變量區(qū)別,何時(shí)用?
靜態(tài)變量只有在第一次遇到時(shí)才初始化,然后狀態(tài)保持不變,因此可以使用它們記錄一些狀態(tài)信息;非靜態(tài)局部變量每次調(diào)用此函數(shù)并進(jìn)入生命周期時(shí)都會(huì)初始化。“為什么會(huì)導(dǎo)致這種差異?”只要明白“這是不同設(shè)計(jì)目的造成的差異”。
當(dāng)類中含有常量和靜態(tài)數(shù)據(jù)成員時(shí),如何對(duì)它們初始化?
類中只能初始化靜態(tài)常量整數(shù)數(shù)據(jù)成員。
這是因?yàn)?,?dāng)時(shí)人們認(rèn)為類定義中的數(shù)據(jù)定義是聲明,而不是數(shù)據(jù)定義。
僅當(dāng)對(duì)象(變量、常量)由類定義時(shí)才定義數(shù)據(jù)。
靜態(tài)常量整數(shù)數(shù)據(jù)成員
1)不是對(duì)象的一部分
2)可以生成常量表達(dá)式,因此可以在類中初始化。---否則,不適合將其用作數(shù)組的大小。
靜態(tài)常量整數(shù)數(shù)據(jù)成員可用作常量表達(dá)式。如果沒有在內(nèi)部定義
,則在沒有定義的情況下不能使用常量表達(dá)式。
C 11非靜態(tài)成員變量(常量)可以直接初始化,也可以在初始化表中初始化。
在C 11中初始化非靜態(tài)成員變量(常量)可視為為為變量(常量)分配默認(rèn)值。