java数组是静态的,即数组被初始化后,其所占内存空间、数组长度是不可变的。初始化数组有静态初始化和动态初始化两种:
public class ArrayTest { //以下是数组的两种静态初始化 String[] books = new String[] { "java", "javascript", "php" }; String[] names = { "html", "css", "jquery" "boostrap" }; //以下是动态初始化 String[] strArr = new String[5]; System.out.println("各数组长度分别为:"+books.length+","+names.length+","+str.length); }
数组本身是放在堆内存中的,只是由放在栈区的变量books,names,strArr作为数组对象来引用。而且数组本身的内存是固定的,一旦被初始化后就不能更改。然后可以通过数组变量引用的数组对象的不同来达到数组长度改变的目的。
什么是数组的初始化呢?看看下面的代码片段也许就知道了!
int[] names = {1,2,3,4}; int[] prices; prices = names; System.out.println(prices.length); System.out.println(prices[2]);
这就说明,所谓数组初始化,也就确立数组变量(指上例的prices)所引用的数组对象(names所指向的内存空间)。
只有数组变量指向有效的数组对象后,才可以被访问到其属性和方法。如下代码片段:
int[] iArr = null System.out.println(iArr);//只要不访问iArr的属性和方法,程序可以运行。 iArr = new int[5]; System.out.println(iArr.length);//只有被初始化后才可以被访问属性或方法,不然会报NullPointException
数组元素可以基本类型和引用型(类,数组,字符串等)。
多维数组可以看成是多个引用类一维数组和基本类型一维数组组合而成。
动态语言javascript与java这种静态语言不同的是,js的数组长度可以改变,如:
<script> var arr = []; alert(arr.length);//弹出0 arr[2] = 2; arr[3] = 3; alert(arr.length);//弹出4 </script>
对于javascript这种弱类型语言,多维数组的使用看起来也相对简洁些。