数组概述
1.数组的定义:
数组是类型相同的有序集合。
数组是描述相同类型的若干个数据,按照一定的先后次序排列组合而成。
其中每一个数据称作数组元素,可以通过下标来访问其元素。
2.数组的四个基本的特点:
1.数组的长度是确定的,一旦被创建,他的大小就是不能被改变的。
2.其元素类型必须相同,不能出现混合类型。
3.数组中的元素可以是任何的数据类型,可以是基本类型也可以是引用类型。
4.数组是引用类型,数组也可以看作对象,数组中的成员变量相当于该对象的成员变量,数组本身就是对象,Java对象是在堆中的,所以数组无论是保存原始类型还是其他类型,数组本身就是在堆里。
数组声明创建
1.声明数组:
dataType[] arrayRefVar; // 首选的方法 或 dataType arrayRefVar[]; // 效果相同,但不是首选方法 double[] myList; // 首选的方法 或 double myList[]; // 效果相同,但不是首选方法
2.创建数组
Java语言使用new操作符来创建数组 ,语法如下:
arrayRefVar = new dataType[arraySize];
以上语法做了两件事:
1.使用dataType[arraySize]创建了一个数组。
2.把数组赋值给变量arrayRefVar。
数组是通过索引访问的,从0到array.length-1.
获取数组的长度语法为:
arrayRefVar = new dataType[arraySize];
【演示创建一个数组,并赋值和进行访问】
public class java1 { public static void main(String[] args) { int[] nums = new int[5]; nums[0] = 1; nums[1] = 2; nums[2] = 3; nums[3] = 4; nums[4] = 5; int sum = 0; for (int l = 0; l < nums.length; l++) { sum += l; } System.out.println("总和为"+sum); } }
结果:
3.内存分析
Java内存分析:
1.声明的时候并不会实例化任何对象,只有在实例化数组对象的时候,JVM才会分配空间,这是才和长度有关,因此声明数组的时候不能指定其长度,错误示范: int a[5]。
2.声明一个数组的时候,数组并没有被真正的创建。
3.构造一个数组必须声明其长度。
//1.声明一个数组 int[] myList = null;
//2.创建一个数组 myList = new int[10];
//3.像数组中存值 myList[0] = 1; myList[1] = 2; myList[2] = 3; myList[3] = 4; myList[4] = 5; myList[5] = 6; myList[6] = 7; myList[7] = 8; myList[8] = 9; myList[9] = 10;
4.三种初始化
静态初始化
除了用 new 关键字来产生数组以外 , 还可以直接在定义数组的同时就为数组元素分配空间并赋值。
int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)};
动态初始化
数组定义、为数组元素分配空间、赋值的操作、分开进行。
int[] a = new int[2]; a[0]=1; a[1]=2;
数组的默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
public static void main(String[] args) { int[] a=new int[2]; boolean[] b = new boolean[2]; String[] s = new String[2]; System.out.println(a[0]+":"+a[1]); //0,0 System.out.println(b[0]+":"+b[1]); //false,false System.out.println(s[0]+":"+s[1]); //null, null }