数组

数组的定义和使用

要求定义100个整型变量: int i1,i2,i3,...i100.

再要求输出这100个变量,会变得特别繁琐

数组:一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作。数组本身属于引用数据类型,涉及到内存分配。

数组的动态初始化:

  •    声明并开辟数组: 数据类型 [ ]   数组名称 = new 数据类型  [长度]

                                        数据类型  数组名称 [ ]  = new 数据类型  [长度]

  •   分布进行数组空间开辟(实例化):

                  (1)声明数组:  数据类型  数组名称 [ ]  =null;

                  (2) 开辟数组空间:数组名称 = new  数据类型 [长度];

范例:定义一个整型数组

public class ArrayDemo{
	public static void main(String args[]){
		int data [] = new int [3]; //开辟了一个长度为3的数组
	}
}

数组的访问用索引的方式,数组名称[索引],索引从0开始。

声明并开辟数组时,数组中的每一个元素都是对应的数据类型的默认值;

超过数组的索引范围,会产生“ArrayIndexOutBoundException”异常。

数组本身是一个有序的集合,索引通常用for循环。

在java中动态取得数组长度的方法:数组名称.length

实例:数组赋值

public class ArrayDemo{
	public static void main(String args[]){
		int data [] = new int [3]; //开辟了一个长度为3的数组
		data [0] = 10;
		data [1] = 20;
		data [2] = 30;
		for(int i = 0;i<data.length;i++){
			System.out.println(data [x]);
		}
	}
}

数组是属于引用数据类型,所以在使用数组时一定要进行数组的实例化。

在实际开发中,会更多的使用数组概念,而直接使用数组大部分情况都是为了数组的for循环输出。

范例:观察一个程序

public class ArrayDemo{
	public static void main(String args[]){
		int data [] = null; //开辟了一个长度为3的数组
		data = new int[3];
		data [0] = 10;
		data [1] = 20;
		data [2] = 30;
	}
}

一个栈内存只能保存一个堆内存的地址,看见new开辟了堆内存,并开辟时是数组数据类型的默认值(0),在进行数组赋值时,按照索引进行修改,和对象的操作是相似的。

引用数据类型就有引用传递,同一块堆内存空间可以被不同的栈内存空间所指向。

范例:引用传递

public class ArrayDemo{
	public static void main(String args[]){
		int data [] =  new int[3];
		int temp [] = null; //声明数组
		temp = data; //数组引用传递不要有[] ,[]是创建数组时用的
		temp [0] = 90;
	}
}

temp 和data指向了同一个堆内存空间,temp进行修改的时候,data数组的值也改变了,temp和data在栈内存中存的两个地址,但是指向的事同一个堆内存空间。

明显特点:先开辟内存空间,在通过索引进行数组值设定,成为动态初始化;定义时同时设置,成为静态初始化。

静态初始化:

   简化格式:数据类型 数组名称 [ ] = {值,...,值}

   完整格式:数据类型 数组名称 [ ] =new  数据类型 [ ] {值,...,值}  (推荐)

范例:静态初始化定义数组

public class ArrayDemo{
	public static void main(String args[]){
		int data [] =  {1,20,30,40,50,60,9,30,200};
		for (int x=0; x<data.length;x++){
			System.out.println(data[x]);
		}
	}
}

在匿名数组时,采用完整格式,因为匿名数组需要new,否则会报错。

public class ArrayDemo{
	public static void main(String args[]){
		System.out.println(new int [] {10,20,30,50,100}.length);
	}
}

在实际开发中一定会用到数组,但是数组会有一个致命的缺点,长度是固定的。

二维数组:(基本不再使用)

如果一个数组需要行索引和列索引同时定位

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值