【JavaSE学习笔记】一维数组

·一维数组

A:数组概念:

用来存储同一种数据类型的容器------就类似于数学里的集合

举例:水杯中的水

B:定义格式

1)数据类型[]  数组名;

       int[] a;--------->定义了一个int类型的数组变量a(推荐使用)

2)数据类型  数组名[];

       int a[];--------->定义了一个int类型的a数组变量

效果一样,只是读法不一样;推荐使用第一种

C:数组初始化:赋值

1)动态初始化:指定数组的长度,元素值由系统默认分配

数据类型[]   数组名 = new 数据类型[指定数组长度];

int[] arr = new int[3];

数据类型  数组名[] =  new 数据类型[指定数组长度];

int arr[] = new int[3];

解释:

   a:int:表示该数组元素都是int类型

   b:[]:表示一维数组(一般情况:默认一维数组,除非指明为二维数组)

   c:arr:表示数组名称

   d:new:在对内存中开辟空间:创建对象


练习:

a:定义一个数组,分别输出该数组名称以及数组的元素,赋值,再次输出


b:定义两个数组,分别输出两个数组的名称以及元素,赋值,再输出


c:定义三个数组:定义第1.2个数组元素,并输出

                            将第1个数组的名称赋给第3个

                            通过第三个数组名称去给第一个数组元素赋值


2)静态初始化:指定数组的具体元素,数组长度由系统默认分配

数据类型[]  数组名 = new 数据类型[]{元素1,元素2...};

int[] arr = new int[]{1,2,3};

数据类型[]  数组名 = {元素1,元素2...};(推荐使用

int[] arr = {1,2,3};


D:异常:Java中经常会出现两种异常

1)java.lang.ArrayIndexOutOfBoundsException:数组角标越界异常

      原因:访问了数组中不存在的索引

      int[] arr = {1,2,3};    //index = 0,1,2

      System.out.println(arr[3]);    //查看控制台,输出异常

2)java.lang.NullPointerException:空指针异常

      原因:数组的对象为空,都不执行内存地址,还要输出元素

      int[] arr = null;    //数组为空

      if(arr != null){

              System.out.println(arr[0]);

      }

E:练习

1)获取数组中的最大值和最小值

      a:定义一个数组,静态初始化

      b:在数组中找一个参照物,一般第一个元素,认为他是最小或最大

      c:遍历其他元素:如果都大于他,那么该元素就最大

      d:输出最大值(同理可输出最小值)  

public class ArrDemo01 {
	//2)遍历数组
	public static void printArr(int arr[]) {
		System.out.print("arr = [");
		for (int i = 0; i < arr.length; i++) {
			if (i == arr.length - 1) {
				System.out.println(arr[i]+"]");
			} else {
				System.out.print(arr[i]+",");
			}
		}
	}
	//3)建立方法,求最大值
	public static void max(int arr[]) {
		int max = arr[0];	//定义第一个元素为最大值
		for (int i = 1; i < arr.length; i++) {		
				if (max < arr[i]) {
					max = arr[i];
			}
		}
		System.out.println("最大值为:"+max);
	}
	//4)建立方法,求最小值
	public static void min(int arr[]) {
		int min = arr[0];
		for (int i = 1; i < arr.length; i++) {
			if (min > arr[i]) {
				min = arr[i];
			}
		}
		System.out.println("最小值为:"+min);
	}
	public static void main(String[] args) {
		//1)定义一个静态数组
		int[] arr = {11,22,33,44,55};
		//5)调用
		printArr(arr);	//打印数组
		max(arr);		//最大值
		min(arr);		//最小值
	}

}
2)数组元素的逆序

     a:定义数组,静态初始化

     b:将0索引的元素和arr.length-1-0的元素交换

           .....

           做到arr.length/2

public class ArrDemo02 {
	//2)输出数组
	public static void printArr(int[] arr) {
		System.out.print("arr = [");
		for (int i = 0; i < arr.length; i++) {
			if (i == arr.length - 1) {
				System.out.println(arr[i]+"]");
			} else {
				System.out.print(arr[i]+",");
			}
		}
	}
	//3)逆序
	public static void exchange(int[] arr) {
		for (int i = 0; i < arr.length / 2; i++) {	//从第一个开始,一直取到中间
			//交换
			int temp = arr[i];
			arr[i] = arr[arr.length - 1 -i];
			arr[arr.length - 1 - i] = temp;
		}
	}
	public static void main(String[] args) {
		//1)定义数组
		int[] arr = {11,22,33,44,55};
		//4)调用
		printArr(arr);	//调用输出方法,先输出原始的数据
		exchange(arr);	//调用交换
		printArr(arr);	//再次调用输出方法,输出交换后的数据
		
	}
}
3)键盘录入一个数据,查询对应的星期

【JavaSE学习笔记】一维数组_第1张图片

你可能感兴趣的:(JavaSE,Java,数组,异常,栈内存)