Java流程控制与数组(四)

1 数组的概念

       Java中数组是一种数组类型,也是一种引用类型,一个数组里只能存储一种数据类型的数据,数组的初始化一旦完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变。

2 数组的定义

      定义数组的语法格式:

 type[]    ArrayName;   或  type  ArrayName[];

      通常建议使用  type[]   ArrayName;方式定义数组。另外数组是一种引用类型的变量,使用它来定义一个变量的时候,这个变量还未指向任何有效的内存,因此定义数组的时候不能指定数组的长度,需要对数组进行初始化后才可以使用。

3 数组的初始化

      数组的初始化有两种方式:静态初始化和动态初始化

3.1 静态初始化

语法格式:ArrayName = new type[] {num1 , num2 , num3 , ...}            (type为数组元素的数据类型)

简化的语法格式: type[]  ArrayName = {num1 , num2 , num3 , ...}         (只有在定义数组的同时又执行数组初始化的时候才支持)

// 定义一个int数组类型的变量,变量名为intArr.
int[] intArray;
// 使用静态初始化,初始化数组时只指定数组元素的初始值,不指定数组长度。
intArray= new int[]{1, 2, 4 , 5};
// 定义一个Object数组类型的变量,变量名为objArr.
Object[] objArray1;
// 使用静态初始化,初始化数组时数组元素的类型是定义数组时所指定的数组元素类型的子类
objArray1 = new String[]{"左肩" , "千古"};
Object[] objArray2;
// 使用静态初始化
objArray2 = new Object[] {"左肩" , "千古"};
// 数组的定义和初始化同时完成,使用简化的静态初始化写法
int[] a = {1, 2 , 3, 4};

3.2动态初始化

     动态初始化只指定数组的长度,由系统为每个数组元素指定初始值。语法格式:ArrayName  = new type[length];

//数组的定义和初始化同时完成,使用动态初始化语法
int[] test = new int[5];
// 数组的定义和初始化同时完成,初始化数组时元素的类型是定义数组时元素类型的子类
Object[] books = new String[4];

系统按如下规则分配初始值

1)数组元素的类型是整型类型(byte、short、int、long),则数组元素的值为0;

2)数组元素的类型是浮点类型(float、double),则数组元素的值为0.0;

3)数组元素的类型是字符类型(char),则数组元素的值为'\u0000';

4)数组元素的类型是布尔类型(boolean),则数组元素的值为false;

5)数组元素的类型是引用类型(类、接口、数组),则数组元素的值为null;

3.3 数组的使用

        Java语言的数组索引是从0开始的,最后一个数组元素的索引值是数组长度减1,如果访问数组元素时指定的索引值小于0或者大于等于数组的长度,编译程序不会出现任何错误,但运行的时候出现异常:java.lang.ArrayIndexOutOfBoundsException:N(数组索引越界异常,N为程序试图访问的数组索引),遍历数组元素可以通过循环来实现遍历,例如使用foreach循环。

3.3.1 foreach循环

        foreach循环语法格式:

for(type tmp : array | collection)
{
     //tmp自动迭代访问每个元素
}

自从Java5之后,foreach循环被提供,使用foreach循环遍历数组和集合元素的特点:无须获得数组和集合的长度,无须根据索引来访问数组元素和集合元素,自动遍历数组和集合的每个元素。

public class ForEachErrorTest
{
	public static void main(String[] args)
	{
		String[] books = {"左肩" , "千古", "认错"};
		// 使用foreach循环来遍历数组元素,其中book将会自动迭代每个数组元素
		for (String book : books)
		{
			book = "test";
			System.out.println(book);
		}
		System.out.println(books[0]);
	}
}

上面程序运行结果

test
test
test
左肩

        从以上代码运行结果看出,使用foreach循环迭代数组元素时,并不能改变数组元素的值,因此不要对foreach的循环变量进行赋值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值