Java基础-数组

97 阅读3分钟

数组入门

数组的概念:存储同一种数据类型的多个元素的容器。

定义的格式:

A:数据类型[] 数组名;

B:数据类型 数组名[];

举例:

A:定义一个int类型的数组,数组名为a ,int[] a

B: 定义一个int类型的数组变量 int a[]

注意:效果都是一样的,都是定义了一个int类型的数组,知识念法上不同而已,推荐使用第一种。

package Java基础04_一维数组;
/*
 * 如何对数组进行初始化数据
 * A:所谓的初始化,就是为数组在内存开辟一块空间,并未对每个数组元素进行赋值
 * B:初始化有两种方式:
 *    a:动态初始化:只给定长度,由系统给出初始值。
 *    b:静态初始化:给出初始值,由系统决定长度,一般来说,由几个值长度就是多少
 *    动态初始化的格式:
 *    数据类型[] 数组名 = new 数据类型[数组的长度(正整数)];
 *    举例:int[] as = new int[3];
 *    
 *    如何存放元素呢?
 *    通过索引值来对元素进行存放:
 *    什么是索引值:
 *           此时的索引值就类似于现实生活的序号,序号是从1开始的,索引值是从0 开始的,
 *           存:
 *           数组名[索引值]=数据;
 *           取:
 *           数据类型 变量名 =数组名[索引值]
 *           特点:数组的长度=最大索引值+1,最大索引值=数组长度-1;
 *            */
public class ArrayDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//定义一个int类型的数组,长度为3
		int[] as = new int[3];
		as[2]=36;
		int i=as[2];
		System.out.println(i);
		int o = as[2];
		System.out.println(o);
		/*
		 * 定义两个数组,分别输出各自元素值
		 * 然后给每个数组的元素进行重新赋值,再次分别输出两个数组的元素
		 * 
		 */
		int[] a =new int[2];
		int[] b = new int[3];
		System.out.println("第一个数组:");
		System.out.println(a[0]);
		System.out.println(a[1]);
		System.out.println("第二个数组:");
		System.out.println(b[0]);
		System.out.println(b[1]);
		System.out.println(b[2]);
		//赋值:
		a[0]=1;
		a[1]=2;
		b[0]=1;
		b[1]=2;
		b[2]=3;
		System.out.println("赋值后第一个数组:");
		System.out.println(a[0]);
		System.out.println(a[1]);
		System.out.println("赋值后第二个数组:");
		System.out.println(b[0]);
		System.out.println(b[1]);
		System.out.println(b[2]);
		System.out.println("==========================");
		/*
		 * 定义第一个数组。定义完毕后,给数组进行赋值,并输出各个元素
		 * 定义第二个数组,把第一个数组的地址值赋值给第二个数组,再给第二个数组进行赋值,
		 * 最后再次输出第一个数组中的各个值
		 * 
		 * 地址值赋值:  arr2 = arr1;
		 */
		int[] arr3 = new int[3];
		arr3[0]=1;
		arr3[1]=2;
		arr3[2]=3;
		System.out.println(arr3[0]);
		System.out.println(arr3[1]);
		System.out.println(arr3[2]);
		System.out.println("地址值:"+arr3);
		int[] arr4 =arr3;
		System.out.println(arr4[0]);
		System.out.println(arr4[1]);
		System.out.println(arr4[2]);
		arr4[2]=333;//给arr4[2]重新赋值,arr3[2]的值也会改变。
		System.out.println(arr3[2]);//输出333,因为地址值一样,此时操作的是同一快内存空间

	}

package Java基础04_一维数组;
/*
 * 数组的静态初始化:
 * 格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,......};
 * 简化格式:数据类型[] 数组名={元素1,元素2,元素3,......};
 * 举例:
 * int[] arr1 = new int[]{1,2,3,4,5};
 * 简化后:int[] arr1 ={1,2,3,4,5};
 * 注意:不能同时动态和静态一起声明。
 */
public class ArrayDemo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//静态定义一个一维数组
		int[] arr1 = new int[]{1,2,3,4,5};
		int[] arr2 = {1,2,3,4,5,6,7,8};
	    String[] tanke={"张飞","刘备","关羽"};
	    //获得arr1中的第3个元素
	    System.out.println(arr1[2]);
	    //获得tanke的长度
	    int tk = tanke.length;
	    System.out.println(tk);
	    //获得tanke中最后一个元素。
	   String str = tanke[tk-1];
	   System.out.println(str);
	   /*
	    * 数组操作的两个常见的小问题:
	    *      1.数组下标越界:java.lang.ArrayIndexOutOfBoundsException
        *      2.空指针异常:java.lang.NullPointerException
	    *      原因:数组已经没有了内存地址值了,而你还用数组名访问,肯定是空指针异常
	    */
		int[] i = {1,2,3};
		//System.out.println(i[3]);//  1.数组下标越界
		i=null;
		System.out.println(i[3]);//2.空指针异常

	}
}