Java学习笔记(4):2.数组

来源:互联网 发布:供应链反应矩阵 编辑:程序博客网 时间:2024/05/17 08:15

1.数组简介

数组是编程语言中最常见的一种数据类型,可用于储存多个数据,每个数组元素存放一个数据,通常可通过数组的索引来访问数组元素,包括数组元素赋值和取出每个数组的值,Java的数组要求所有的数组元素具有相同的数据类型。另外,一旦数组的初始化完成,数组在内存中所占的空间便被固定下来,因此数组的长度将不可改变。即使把某个数组元素的数据清空,但它所占的空间依然被保留,依然属于该数组,数组的长度依然不变。

2.定义数组

Java支持两种语法格式来定义数组:

(1) type[] arraryName;(推荐使用)

(2)type arraryName[];

数组是一种引用类型的变量,因此使用它定义一个变量时,仅仅定义了一个引用变量(也就是定义了一个指针),这个引用变量并未指向任何有效的内存,因此定义数组时不能指定数组的长度。只有对这个数组进行初始化后才能使用。

3.数组的初始化

Java语言中数组必须进行初始化才能使用,所谓初始化就是为数组的数组元素分配内存空间,并为每个数组元素赋初值。

数组的初始化有如下两种方式:

(1)静态初始化:初始化时有程序员显式指定每个数组元素的初始值,由系统决定数

组长度。

静态初始化的语法格式如下:

arrarName = new type[] {element1,element2,...}

type必须与定义数组变量时所使用的type相同,也可以与定义数组时所指定的type的子类

//定义一个int数组类型的变量变量名为intValint[] intVal;//使用静态初始化,初始化数组时只指定数组元素的初始值,不指定数组长度intVal = new int[]{5,6,8,20};//定义一个Object数组类型的变量,变量名为objArrObject[] objArr;//使用静态初始化,初始化数组时的类型是定义数组时数组元素的类型的子类objectArr = new String[]{"Java" , "June"};Object[] objArr2;objArr2 = new Object[]{"Java", "June"};

除此之外,静态初始化还有如下简化的语法格式:

arrayName = {element1,element2,...}

实际开发中,可能更习惯将数组的定义和数组初始化同时完成:

int[] a= {1,2,3,4}

(2)动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。

arraryName = new type[length];

//数组的定义和初始化同时完成,使用动态初始化语法int[] prices = new int[5];//数组的定义和初始化同时完成,初始化数组时元素的类型是定义数组时元素类型的子类Object[] books = new String[4];
执行动态初始化时,程序员只需指定数组的长度,即为每个数组元素指定所需的内存的空间,系统将负责为这些数组元素分配初始值。指定初始值时,系统按如下规则分配初始值。

>数组元素的类型是基本类型中的整数类型(byte、short、int和long),则数组元素的值是0

>数组元素的类型是基本类型中的浮点类型(float和double),则数组元素的值是0.0

>数组元素的类型是基本类型中的字符类型(char),则数组元素的值是'\u0000'

>数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值是false

>数组元素的类型是引用类型(类、接口和数组),则数组元素的值是null

4.使用数组

数组最常用的用法就是访问数组元素,包括对数组元素进行赋值和取出数组元素的值。访问数组元素都是通过在数组引用变量后紧跟一个方括号([]),方括号里是数组的索引值,这样就可以访问数组元素了(Java语言的数组索引是从0开始的)。

(程序清单同上)

//输出objArr数组的第二个元素,将输出字符串"June"System.out.println(objArr[1]);//为objArr2的第一个数组元素赋值objArr2[0] = "spring";

下面代码示范了为动态初始化的数组元素进行赋值,并通过循环的方式输出每个数组元素(程序清单同上)

//对动态初始化后的数组元素进行赋值

books[0] = "疯狂Java讲义";books[1] = "轻量级Java EE企业应用实战";for(int i = 0; i <books.length;i++){     System.out.println(biiks[i]);}
上面的代码将先输出字符串"疯狂的Java讲义"和"轻量级Java EE企业应用实战",然后输出两个null.

5.foreach循环

  从Java5以后,Java提供了一种更简单的循环:foreach循环,这种循环遍历数组和集合更加简洁。使用foreach循环遍历数组和集合元素时,无需获得数组和集合的长度,无须根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合的每个元素。

  foreach循环的语法格式如下:

for(type variableName : array | collection){

//variableName 自动迭代访问每个元素...

}

public class ForEachTest {public static void main(String[] args){String[] books = {"轻量级 Java EE企业应用实战","Java疯狂讲义","疯狂Android讲义"};//使用foreach循环遍历数组元素//其中book将会自动迭代每个数组元素    for(String book : books ){        System.out.println(book);    }}}
运行结果如下:

6.深入数组

  数组时一种引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里时候分开存放的。下面将深入介绍数组在内存中的运行机制。

(1)内存中的数组

  




0 0
原创粉丝点击