形式1:
Object[] params = null; params = {1, 2, 3, 4};
形式2:
Object[] params = {1, 2, 3, 4};
形式3:
Object[] params = new Object[]{1, 2, 3, 4};
1.为什么第一种形式就是错的(编译阶段就报错),而第二种就可以呢?(第三种很显然)2.第二种和第三种,哪种初始化方式更优呢?(或者有更好的?)
欢迎选择我的课程,让我们一起见证您的进步~~
首先因為數組初始化要使用的時候必須確定數組的長度,也就是說數組的長度是不可變的。 在JAVA中建立陣列有兩種方式 :(1)靜態建立 如
Object[] arr1 = {"a","b","c"};
(2)動態建立 如1
Object[] arr3 = new Object[]{"a","b","c"};
2
Object[] arr2 = new Object[3]; arr2[1] = "a"; arr2[2] = "b"; arr2[3] = "c"; //先确认元素个数,一般情况下习惯使用动态创建方式 比较灵活 可以先规定元素个数 后对每个元素进行赋值
3
Object[] arr4 = null; arr4 = new Object[3]; arr4[1] = "a"; arr4[2] = "b"; arr4[3] = "c"; //直接给arr4初始化为null,然后要使用的时候再创建一个新的数组new Object[3],让arr4指向新数组的地址,然后再依次赋值
而題主說的那種方法:
錯誤一:你這是直接創建一個空數組params,也就是他就是空了,數組的長度不可改變,你這時候往裡面加數據,一個空數組自然加不了任何東西,所以編譯時就會出錯。你應該跟我上面所說的第二種方法一樣,重新建立一個長度為4的數組,把新數組的位址給params,也就是Object[] params = null; params = new Object[4];這樣就可以創建。 錯誤二:數組的初始化只有在定義的時候可以連續添加,定義完
Object[] params = null; params = new Object[4];
之後,你要向裡面添加數據,就只能對著數組下標,一個一個添加。
params[1] = 1; params[2] = 2; params[23 = 3; params[4] = 4;
而不能直接params = {1, 2, 3, 4};
形式1
這種宣告方式其實只是Java初始化陣列的語法糖,所謂語法糖只是為了方便碼農,在實際執行中,Java會把它變成形式3,即
而Java並沒有提供類似形式2的這種語法糖,所以這樣使用是非法了。
Object[] params = null; params = new Object[]{1, 2, 3, 4};
A. 文法規定樓主不需要太糾結B. 如果你預先知道數組元素,使用第Object[] params = {1, 2, 3, 4};聲明數組代碼更簡潔,沒有更優的說法。
第一種的聲明方式就是不正確的應該是Object[] params = new Object[length]
我常用的是第二種
首先因為數組初始化要使用的時候必須確定數組的長度,也就是說數組的長度是不可變的。
在JAVA中建立陣列有兩種方式 :
(1)靜態建立 如
(2)動態建立 如
1
2
3
而題主說的那種方法:
錯誤一:你這是直接創建一個空數組params,也就是他就是空了,數組的長度不可改變,你這時候往裡面加數據,一個空數組自然加不了任何東西,所以編譯時就會出錯。你應該跟我上面所說的第二種方法一樣,重新建立一個長度為4的數組,把新數組的位址給params,也就是Object[] params = null; params = new Object[4];這樣就可以創建。
錯誤二:數組的初始化只有在定義的時候可以連續添加,定義完
之後,你要向裡面添加數據,就只能對著數組下標,一個一個添加。
而不能直接params = {1, 2, 3, 4};
形式1
這種宣告方式其實只是Java初始化陣列的語法糖,所謂語法糖只是為了方便碼農,在實際執行中,Java會把它變成形式3,即
而Java並沒有提供類似形式2的這種語法糖,所以這樣使用是非法了。
A. 文法規定樓主不需要太糾結
B. 如果你預先知道數組元素,使用第
Object[] params = {1, 2, 3, 4};
聲明數組代碼更簡潔,沒有更優的說法。第一種的聲明方式就是不正確的
應該是Object[] params = new Object[length]
我常用的是第二種