更新時間:2020-11-03 17:32:49 來源:動力節(jié)點 瀏覽1180次
說到Java靜態(tài)數(shù)組,我們第一時間可能就會想到相應(yīng)的動態(tài)數(shù)組,兩者看上去挺相似,實質(zhì)卻大不一樣。Java靜態(tài)數(shù)組是一定義出來就創(chuàng)建了,而動態(tài)數(shù)組則是定義時不創(chuàng)建,使用時才創(chuàng)建,一定意義上節(jié)省了內(nèi)存空間。本文我們主要來講一講相對比較簡單的Java靜態(tài)數(shù)組。
實際上我們之前學(xué)習(xí)的大部分數(shù)組都是靜態(tài)數(shù)組,然而在很多的時候,靜態(tài)數(shù)組根本不能滿足我們編程的實際需要,比方說我需要在程序運行過程中動態(tài)的向數(shù)組中添加數(shù)據(jù),這時我們的靜態(tài)數(shù)組大小是固定的,顯然就不能添加數(shù)據(jù),要動態(tài)添加數(shù)據(jù)必須要用到動態(tài)數(shù)組,動態(tài)數(shù)組中的各個元素類型也是一致的,不過這種類型已經(jīng)是用一個非常大的類型來攬括—Object類型。
Java靜態(tài)數(shù)組,顧名思義,是靜態(tài)不變的,在內(nèi)存中位于棧區(qū),是在定義時就已經(jīng)在棧上分配了固定大小,在運行時這個大小不能改變,如:int a[10];
在函數(shù)執(zhí)行完以后,系統(tǒng)自動銷毀;
動態(tài)數(shù)組是malloc或者new出來的,位于內(nèi)存的堆區(qū),它的大小是在運行時給定,并且可以改變其,如:
int *a;
a = new int[10];動態(tài)數(shù)組,其創(chuàng)建麻煩,使用完必須由程序員自己通過free或者delete釋放,否則嚴重會引起內(nèi)存泄露。new[]/delete[]
#include
#include
void fun( int *p )
{
sizeof( p ) / sizeof( p[0] );
}
int main( void )
{
int a[5];
int *p = a;
sizeof( p ) / sizeof( int ); // 結(jié)果為1
sizeof( a ) / sizeof( int ); // 結(jié)果為5
p = ( int * ) malloc( sizeof(int) * 5);
sizeof( p ) / sizeof( int ) ; //結(jié)果為1
return 0;
}
Java靜態(tài)數(shù)組可以看成是一個特殊的指針,它是指是一個常量,在第一次賦值以后,不能修改。編譯器還保存關(guān)于數(shù)組長度的信息sizeof()便可以體現(xiàn)。
一般我們定義一個數(shù)組 int a[5] ; main函數(shù)棧就為它分配空間,便把這段空間的首地址賦值給a,a 做為指針類型,具有具體值,只能作為右值(出現(xiàn)在在表達式的右邊)。
下面我們通過實例來看一下Java靜態(tài)數(shù)組的創(chuàng)建和簡單使用:
#include
int main(void)
{
// 創(chuàng)建具有10個元素的數(shù)組并且全部初始化為0
int arr1[10] = {};
// 跟上面一樣, 賦值符號可省略
int arr2[10]{};
// 創(chuàng)建具有10個元素的數(shù)組,前三個分別初始化為1, 2, 3, 剩余全部初始化為0
int arr3[10]{ 1, 2, 3 };
// 創(chuàng)建具有4個元素的數(shù)組, 編譯器在編譯的時候會確定數(shù)組中元素的數(shù)量
int arr4[]{ 4, 5, 6, 7 };
// 對數(shù)組的元素進行操作
arr4[2] = 1024; // arr4的現(xiàn)在元素是{ 4, 5, 1024, 7 }
// 數(shù)組名是內(nèi)存地址而不是指針, 去掉下面注釋將會報錯
// arr1 = arr4;
// 數(shù)組名是數(shù)組的首地址, 使用指針保存數(shù)組首地址
auto *p = arr4; // int *p = arr4;
std::cout << p[2] << std::endl;
return 0;
}
以上就是Java靜態(tài)數(shù)組的相關(guān)知識,或許你學(xué)的還不夠盡興,那么來觀看本站的Java基礎(chǔ)教程吧,不僅能夠帶你全面學(xué)習(xí)Java數(shù)組知識,還有更多的Java基礎(chǔ)知識幫你奠定良好的Java基礎(chǔ)!
初級 202925
初級 203221
初級 202629
初級 203743