java靜態(tài)方法的好處 final修飾的數(shù)組什么不可以被改變?
final修飾的數(shù)組什么不可以被改變?final修飾符分兩種情況:如果是修飾基本類型,如果整形,浮點(diǎn)型,如finalinti=100,這里的i的值是不能變的如果修飾的是對(duì)象,如finalStrings
final修飾的數(shù)組什么不可以被改變?
final修飾符分兩種情況:如果是修飾基本類型,如果整形,浮點(diǎn)型,如finalinti=100,這里的i的值是不能變的如果修飾的是對(duì)象,如finalStrings="dddd",這里的引用是不能變的,比如你不能這樣寫:s="bbbbb"
java中,static final和單獨(dú)static有什么區(qū)別?
final可以修飾:屬性,方法,類,局部變量(方法中的變量)
final修飾的屬性的初始化可以在編譯期,也可以在運(yùn)行期,初始化后不能被改變。
final修飾的屬性跟具體對(duì)象有關(guān),在運(yùn)行期初始化的final屬性,不同對(duì)象可以有不同的值。
final修飾的屬性表明是一個(gè)常數(shù)(創(chuàng)建后不能被修改)。
final修飾的方法表示該方法在子類中不能被重寫,final修飾的類表示該類不能被繼承。
對(duì)于基本類型數(shù)據(jù),final會(huì)將值變?yōu)橐粋€(gè)常數(shù)(創(chuàng)建后不能被修改);但是對(duì)于對(duì)象句柄(亦可稱作引用或者指針),final會(huì)將句柄變?yōu)橐粋€(gè)常數(shù)(進(jìn)行聲明時(shí),必須將句柄初始化到一個(gè)具體的對(duì)象。而且不能再將句柄指向另一個(gè)對(duì)象。但是,對(duì)象的本身是可以修改的。這一限制也適用于數(shù)組,數(shù)組也屬于對(duì)象,數(shù)組本身也是可以修改的。方法參數(shù)中的final句柄,意味著在該方法內(nèi)部,我們不能改變參數(shù)句柄指向的實(shí)際東西,也就是說(shuō)在方法內(nèi)部不能給形參句柄再另外賦值)。
static可以修飾:屬性,方法,代碼段,內(nèi)部類(靜態(tài)內(nèi)部類或嵌套內(nèi)部類)
static修飾的屬性的初始化在編譯期(類加載的時(shí)候),初始化后能改變。
static修飾的屬性所有對(duì)象都只有一個(gè)值。
static修飾的屬性強(qiáng)調(diào)它們只有一個(gè)。
static修飾的屬性、方法、代碼段跟該類的具體對(duì)象無(wú)關(guān),不創(chuàng)建對(duì)象也能調(diào)用static修飾的屬性、方法等
static和“this、super”勢(shì)不兩立,static跟具體對(duì)象無(wú)關(guān),而this、super正好跟具體對(duì)象有關(guān)。
static不可以修飾局部變量。
static final和final static沒(méi)什么區(qū)別,一般static寫在前面。
static修飾的屬性強(qiáng)調(diào)它們只有一個(gè),final修飾的屬性表明是一個(gè)常數(shù)(創(chuàng)建后不能被修改)。static final修飾的屬性表示一旦給值,就不可修改,并且可以通過(guò)類名訪問(wèn)。
static final也可以修飾方法,表示該方法不能重寫,可以在不new對(duì)象的情況下調(diào)用。
數(shù)組可以改變長(zhǎng)度嗎?
java中數(shù)組的長(zhǎng)度不可以改變。java中的數(shù)組的定義就是相同類型,固定長(zhǎng)度的一組數(shù)據(jù),一旦被初始化,長(zhǎng)度不可更改。如果對(duì)需要用的數(shù)組的長(zhǎng)度不確定,有兩種解決辦法:第一種是在數(shù)組初始化的時(shí)候長(zhǎng)度申請(qǐng)的足夠大,這樣做會(huì)造成內(nèi)存空間的浪費(fèi),一般不推薦使用。第二種是用java中提供的集合的方式存儲(chǔ)數(shù)據(jù),如List,Set和Map類型的對(duì)象存儲(chǔ)數(shù)據(jù),一方面這些類型的對(duì)象的長(zhǎng)度都是動(dòng)態(tài)增長(zhǎng)的,另一方面這些類中提供了很多便于操作數(shù)據(jù)的方法,因此在對(duì)所需存儲(chǔ)數(shù)據(jù)的多少不確定的時(shí)候,第二種方法比第一種方法更優(yōu)秀。
不要將數(shù)組聲明為:publicstaticfinal?
因?yàn)閜ublic static final 這個(gè)聲明會(huì)使的后面的變量成為常數(shù)
即:
public static final int ONE = 1
這句話之前ONE還什么都不是,這句話一說(shuō)完ONE這個(gè)變量就成了常量,可以等同“1”來(lái)用了。
所以你若用public static final int[] array = new int[]{1,2,3}的話,
你就把這個(gè)array數(shù)組定死了,排序啊,增刪改都沒(méi)發(fā)進(jìn)行了。
c語(yǔ)言中數(shù)組的大小可以改變嗎?
在MSDN中的array declarations有如下描述:The type of integer required to hold the maximum size of an array is the size of size_t. Defined in the header file STDDEF.H, size_t is an unsigned int with the range 0x00000000 to 0x7CFFFFFF. 也就是說(shuō),只要硬件條件許可的條件下,數(shù)組的大小可以為0x7CFFFFFF(2G BYTE)。數(shù)組所占空間為:count*sizeof(TYPE) , count是數(shù)組元素的個(gè)數(shù),sizeof(TYPE) 是一個(gè)元素所占空間字節(jié)數(shù)。如果定義數(shù)組空間超出2G,VC編譯會(huì)報(bào)錯(cuò):fatal error C1126: "2G" : automatic allocation exceeds 。。。因此,當(dāng)實(shí)際編程確實(shí)需要使用更大的數(shù)組時(shí),則要采用動(dòng)態(tài)定義方式(new malloc等)。