Java——数组
【数组】
注:C/C++中数组可以存储在栈中,但是Java中不可以(因为Java中是引用)。
【一维数组】
声明: type var[]; 或者 type[] var;
Java语言生成数组时不能指定其长度(数组中元素的个数),例如int a[4]是非法的
(--因为Java中数据分配在堆中,是动态分配的;C语言可以)。
数组对象的创建:
数组名 = new 数组元素的类型[数组元素的个数]
【内存分配】
注:这表示在内存中new出5个对象,每个对象的初始化值为0(默认值)。
new int[5]与int[] arr不同:前者合法,后者非法。
【元素为引用数据类型的数组】
注意:元素为引用数据类型的数组中的每一个元素都需要实例化。
注:<1>days数据类型为数组,Date[]作为一个类。
<2>days = new Date[3];表示引用类型的数据,即days(栈中)指向堆中的一个区域Date[3]。
<3>days[i] = new Date(2004,4,i++);表示一个引用,days[1]指向堆中的另外一个区域Date(2004,4,1)。
【数组初始化】
动态初始化:数组定义与数组元素分配空间和赋值的操作分开进行。
(一定要记住数组要先分配好空间再使用,不一定非要赋值)
注:<1>int a[];----数组定义(栈)
<2>a=new int[3];----分配空间(堆)
<3>a[0]=3;----赋值操作(堆)
静态初始化:在定义数组的同时就为数组元素分配空间并赋值。
【数组元素的默认初始化】
数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化。
注:<1>a[3]是int类型,int类型默认初始值为0.
<2>days[2]是引用类型,引用类型默认初始值为NULL。
【数组元素的引用】
注:数组的length是一个属性,不是一个方法(因此不要写成a.length())。
【String[] args】
在Java的main函数中输入以下的语句:
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
编译运行后无任何显示。
输入命令行参数:java test.java 11 22 33 aa bb cc
输出结果为:11 22 33 aa bb cc
【基础类型的包装类】
一般基础类型数据加载在栈中,如果需要存储在堆中,则需要包装为对象。
例如:byte-->Byte,int-->Integer,char-->Character......
这样就可以实现数据之间的转换,因为基础类型的数据已经转换为Class对象,在API中就有一系列对应的方法。
例如: static double = Double(String s);----传入的参数为String类型,返回的double类型。