---恢復內容開始---
1、概述
由於java是典型的靜態語言,因而java中的數組也是靜態的;java數組變量是引用類型的變量,(ps:java中的引用有些許像c++和c中的指針)當我們使用java數組的時候,主要有2部分操作;分別是定義引用變量(相當於c++/c中的定義一個指針(指NULL))和實例化數組對象。
在java內存分配機制中,定義局部變量和引用變量是在相應的方法棧內存中申請一塊空間;而引用變量所指向的對象(類對象、數組對象)是在堆內存中申請了內存;棧內存容易訪問(直接訪問),堆內存不易訪問(需要借助引用變量來訪問堆內存)。
2、數組初始化
java數組的初始化分為2種;分別是靜態初始化和動態初始化。
靜態初始化:
在定義數組的時候同時對數組對象進行初始化操作;但是不可以對數組長度進行賦值。
例:int []a=new int[]{1,2,3,4};
String []b=new String[]{"Kylin","shanshan"};
動態初始化:
定義數組的時候只對數組長度進行了賦值,並沒有對具體的數組對象進行初始化(由系統默認初始化)
例如:int []c=new int[4];
String []d=new String[3];
對於c數組的實例化對象的值,分別是c[0]==0 c[1]==0 c[2]==0 c[3]==0
d數組對象的值分別是 null null null;
為什么會這樣呢? 這是由於java有一套默認的初始化機制,下面介紹一下java為數組元素分配的初始值:
整型類型(byte,short,int,double)默認初始值是0
浮點類型(double,float)默認初始值0.0
布爾類型(boolean)默認初始值false
引用類型(數組、類、接口、String)默認初始值為null
字符類型(char)默認初始值'\u0000'
3、二維數組(多維)
初始化多為數組的時候可以先只初始化最左邊維度,java允許講多維數組當成是一維數組來處理,廢話不多說,上例子。
int [][]a=new int[3][]; //java中二維數組的數組名代表一維數組的首地址(和c++/c一樣) System.out.println(a.length); for(int i=0;i<a.length;i++) { //讓一維數組的元素再指向新的一維數組;就形成了二維(多維)數組;這里可以指向很多長度不同的新數組 a[i]=new int[4]; } for(int i=0;i<4;i++) { System.out.print(a[0][i]+" "); }
運行結果如下:
---恢復內容結束---