从头开始学java--数组




一.数组的定义

本来数组在C++中已经写了好多,但是一直没把数组当成个对象。在java中,数组也是个对象!所以还是用引用型变量,定义一个数组。与之前C风格的数组在定义的时候不大一样,所以还是记录一下。
一个例子:
public class ArrayTest {
	public static void main(String[] args)
	{
		//定义一个长度为3的数组
		int[] x = new int[3];
		for (int i = 0; i < 3; i++)
			System.out.println(x[i]);//输出为 0 0 0
		for (int i = 0; i < 3; i++)
			x[i] = i;
		for (int i = 0; i < 3; i++)
			System.out.println(x[i]);//输出为 0 1 2
	}
}


要点:
1.定义一个数组的格式:  数组保存的数据类型[]  数组名  =   new   数组保存的数据类型[数组的长度]    eg:int[] array = new int[3];
2.堆内存中的数据有默认的值,int默认值为0,double为0.0 boolean为false。
3.左边是在栈内存中定义一个array的引用型变量,右边new出一个int型的对象。用array引用该对象。对于数组,即array保存数组在堆内存中的首地址。
4.数组的操作注意不要引发NullPointerException异常和ArrayIndexOutOfBoundsException异常

数组的一种简单定义及赋初值方式:
public class ArrayTest {
	public static void main(String[] args)
	{
		//定义一个数组,并赋初值
		int[] x = {1, 2, 3};
		
		for (int i = 0; i < x.length; i++)
			System.out.println(x[i]);//输出为 1 2 3
	}
}
要点:
1.定义方式:   数据类型[]  数组名  = {数组内容, 数组内容.......};
2.数组的长度可以用   数组名.length获得。


二.引用类型数组(对象数组)

class ArrayDemo
{
	public int value = 100;
}


public class ArrayTest {
	public static void main(String[] args)
	{
		ArrayDemo[] array = new ArrayDemo[3];
		System.out.println(array[0].value);
	}
}
结果如图:

结果是空指针异常。原因是数组是引用数据类型,但是仅仅是创建了一个数组,并没有创建对象。

改正:
class ArrayDemo
{
	public int value = 100;
}


public class ArrayTest {
	public static void main(String[] args)
	{
		ArrayDemo[] array = new ArrayDemo[3];
		//为数组的每个元素创建一个对象来引用
		for (int i = 0; i < array.length; i++)
			array[i] = new ArrayDemo();
		for (int i = 0; i < array.length; i++)
		System.out.println(array[0].value);
	}
}
结果如下:


要点:
虽然数组是引用类型,但是数组元素如果也是引用类型,不是原始数据类型,仍需要创建对象后再使用,否则会出现空指针异常。

三.数组的遍历

用惯了C的for循环,发现java还有一个更为简单的遍历方式,foreach循环
public class ArrayTest2 {
	
	public static void main(String[] args)
	{
		int[] array = {1, 2, 3, 4, 5};
		//foreach遍历
		for(int x : array)
			System.out.println(x);
	}

}
foreach字面理解就是每个都,事实也是如此,遍历数组中的每个元素。
要点:
1.foreach其实就是for循环的简化版,任何foreach循环都可以化成for循环,反过来不成立。
2.在for()中定义一个迭代变量,与数组元素相同。注意格式for(数据类型 数据名 :数组名)     调用数据名


四.数组作为参数传递

public class ArrayTest3 {
	public static void main(String[] args)
	{
		int[] array = {1, 2, 3, 4};
		printArray(array);
	}
	
	public static void printArray(int[] arr)
	{
		for(int x : arr)
			System.out.println(x);
	}
}
要点:
数组作为引用类型传参,传递数组名即可,传递之后,数组有可能会被修改。


五.多维数组


public class ArrayTest4 {
	public static void main(String[] args)
	{
		//直接定义二维数组
		int arr[][] = new int[2][3];
		//分开定义二维数组
		int arr2[][];
		//定义行
		arr2 = new int[2][];
		//分别定义每一行,每一行的个数可以不一样
		arr2[0] = new int[2];
		arr2[1] = new int[4];
		
		for(int i = 0; i < 2; i++)
			for(int j = 0; j < 2; j++)
				System.out.println(arr2[i][j]);
	}
}
java中也可以定义多维数组,多维数组可以看做一维数组。
要点:
两种定义方式,第一种直接定义,与C差不多。 第二种是先定义行数,再分开定义每一行,这样可以让数组不“对称”,即每行元素个数可以不同。但是访问时需要注意下标不要越界。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值