数组
数组的定义:
数组是相同类型数据的有序集合,数组描述的是相同类型的若干数据。按照一定的先后顺序排列组合而成。其中,每个数据就是一个元素,每个元素可以通过一个索引(下标)来访问。数组有四个基本特点:
1、长度是确定的,数组一旦被创建,它的大小就不可改变。
2、其元素的理性必须是相同类型,不允许混合类型。
3、数组类型可以是任何类型,包括基本类型和引用类型。
4、数组变量是引用类型,数组也是对象。
创建数组和初始化:
数组的创建和初始化是数组使用的第一步,通过内存分析可以更清楚的了解数组。同事,通过内存分析也可以明白数组本质还是“对象”。
数组声明:
type[ ] arr_name; //方式一(推荐使用这种方式)
type arr_name[ ]; //方式二
注:
1、声明时并没有实例化任何对象,只有实例化数组对象时,JVM才分配内存空间,这时才与长度有关。
2、声明一个数组时,数组并没有真正被创建。
3、构造一个数组,必须指定长度。
/*
* 创建基本类型一维数组
*/
package cn.wu.array;
public class Test01 {
public static void main(String[] args) {
int[] s = null;//声明数组;
s = new int[10];//给数组分配内存空间;
for(int i = 0;i < 10; i++){
s[i] = 2*i+1;//给数组元素辅助;数组是对象,数组中的元素就是对象的属性;遵守对象初始化默认规则。
System.out.println(s[i]);
}
}
}
/*
* 创建引用型一维数组
*/
package cn.wu.array;
public class Man {
private int age;
private int id;
public Man(int age, int id ){
super();
this.age = age;
this.id = id;
}
}
package cn.wu.array;
public class AppMain{
public static void main(String[] args) {
Man[] mans ; //声明引用类型数组
mans = new Man[10];//给引用类型数组分配空间;
Man m1 = new Man(1,11);
Man m2 = new Man(2,22);
mans[0] = m1;//给引用类型数组元素赋值
mans[1] = m2;//给引用类型数组元素赋值
System.out.println(m2.toString());
System.out.println(m1.toString());
}
}
初始化:
数组初始化方式分为三种:静态初始化、动态初始化、默认初始化。
静态初始化:
除了new关键字来创建数组外,还可以直接定义数组的同时就为数组分配内存空间和赋值
动态初始化:
数组定义与数组元素分配空间并赋值分开进行。
默认初始化:
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配,其中每个元素也按照实例变量相同方式被隐式初始化
/*
* 数组的初始化:
* 1、静态初始化
* 2、动态初始化
* 3、默认初始化
*/
package cn.wu.array;
public class Sum {
public static void main(String[]args){
//静态初始化数组; 除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配并赋值
int[] a = {1,2,3};//静态初始化基本类型数组
Man[] mans = {new Man(1,1),new Man(2,2)};//静态初始化引用类型数组;
//动态初始化数组: 数组定义与为数组元素分配空间并赋值的操作分开进行
int[] a1 = new int[2];//动态初始化数组,先分配内存空间
a1[0] = 1;//给数组元素赋值
a1[1] = 2;//给数组元素赋值
//默认初始化数组: 数组是引用类型,它的元素相当于子类的实例变量,因次数组一经分配空间,其中每个元素也被按照实例变量同样的方式隐式初始化
int a2[] = new int[2]; //默认值:0,0
boolean[]b = new boolean[2];//默认值:false,false
String[] s = new String[2];//默认值: null,null
}
}