Java数组合集

1.数组(默认是一维数组)

(1)数组:可以存储多个元素并且多个元素是 同一种类型的容器
(2)数组的 定义:
           数据类型[] 数组名;
           数据类型 数组名[];
 举例:
    int[] a;     定义了一个int类型的数组变量a
    int a[];     定义了一个int类型 变量a数组
    这两种方式的定义:虽然写法不一样,并且读法不一样,但是表达的效果一样,都是在定义一个数组,推荐使用第一种方式!
(3)数组的初始化:
        1)动态初始化:  给数组指定长度,数组中的元素值由系统默认给定
        2)静态初始化:  给定数组中元素的值,数组的长度由系统给定

  1) 动态初始化
          数据类型[] 数组名 = new 数据类型[数组长度] ;
举例:
                int[] arr = new int[3] ;
		/***
		 * 左边:
		 * 	int[]  :定义的是一个int类型的数组
		 *  arr  : 数组名称 
		 *  右边:
		 *  new :创建一个数组对象(它会在堆内存中存在)
		 *  int[] :当前int类型的数组
		 *  3:当前数组的长度是3
		 */

  注意: 没有被初始化的数组是不能使用的!
  如何获取数组中的元素?
                 /**
		 * 获取数组中的元素:通过数组名称获取
		 *   格式:
		 *   	数组名称[索引值],数组的索引值从0开始,最大的索引=数组长度-1
		 */

2)静态初始化
  定义格式
        原始格式:
               数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3....} ;
        简写方式:
                数据类型[] 数组名称= {元素1,元素2,元素3..} ; 
  举例: 
        int[] arr = new int[]{1,2,3} ;
        int[] arr = {1,2,3} ;
        int[] arr2 = new int[3]{1,2,3} ;  // 这种方式错误:动静结合
       定义数组要么动态初始化,指定长度,要么静态初始化指定数组元素!

(5) 数组中经常会出现的异常:
    ArrayIndexOutOfBoundsException:数组角标越界异常
          出现的原因:访问了数组中不存在的索引值;
          解决方案:观察数组中到底有索引值到多少;  数组长度-1
    NullPointerException:空指针异常 (在实际开发中该异常是最多的)
          出现的原因:对象为null,而开发者还要去使用对象,就会出现问题
          解决方案:给某个对象进行非空判断,防止程序程序空指针异常
 建议:
        对于异常: 将从头到尾,遇见到的异常建立文档,并列出出现该异常的原因以及如何解决异常!
(6)数组中的应用
      1)给定一个数组,静态初始化的,遍历这个数组;

public static void printArray(int[] arr) {
  //左中括号
  System.out.print("[");
  for(int x = 0 ; x < arr.length ; x ++) {
   //判断当前x是否是最后一个索引
   if(x==arr.length-1) {//如果是最后一个索引的对应的元素
    System.out.println(arr[x]+"]");
   }else {
    System.out.print(arr[x]+", ");
   }
  }
 }

     2)数组中的最值应用:        自定义一个数组,静态初始化,求数组中的最大值或者最小值;
public static int max(int[] arr) {
  //定义参照物
  int max = arr[0] ;
  //遍历其他元素
  for(int x = 1 ; x < arr.length ; x ++) {
   //获取到每一个元素,分别和参照物进行比较,如果大了,就作为最大值进行继续比较
   if(arr[x] > max) {
    max = arr[x] ;
   }
  }
  return max ;
 }


    3)定义一个数组,元素逆序( 保证数组的长度arr.length/2)

public static void reverse(int[] arr) {
  for(int x = 0 ; x < arr.length/2 ; x ++) {
   int temp = arr[x] ;
   arr[x] = arr[arr.length-1-x] ;
   arr[arr.length-1-x] = temp ;
  }
 }

    4)数组中的元素基本查找法,定义一个数组,静态初始化,查找某个元素在该数组中第一次出现的索引
public static int findIndex(int[] arr,int value) {
		//遍历arr数组元素
		for(int x = 0 ; x < arr.length ; x ++) {
			//判断:如果查找的元素恰好就是value值,那么直接返回该索引
			if(arr[x] == value) {
				return x ;
			}
		}
		//不但要考虑找到的情况,还要考虑到找不到的情况
		//在Java中,数组查找元素,如果找不到,返回-1 ,(找不到)
		return - 1;
	}
2.二维数组
(1)二维数组的定义:
         1) 数据类型[] [] 数组名 = new 数据类型[m][n] ;
                m:代表当前二维数组中有多少个一维数组
                n:代表每一个一维数组中的长度
         2)二维数组的格式2
             数据类型[][] 数组名 = new 数据类型[m][] ;  //只给定有m个一维数组,每一个一维数组长度动态给定
           比如:
                //定义一个二维数组
		int[][] arr = new int[3][] ;
         
         3)二维数组的格式3(静态初始化)
             数据类型[][] 数组名称 = {{元素1,元素2,元素3},{....}} ;
           比如:
                //定义一个二维数组,静态初始化
		int[][] arr = {{1,2,3},{4,5},{6}} ;

(2)关于二维数组的遍历
public static void printArray(int[][] arr) {
  for(int x = 0 ; x < arr.length ; x ++) {
   for(int y = 0 ; y < arr[x].length ; y++) {
    System.err.print(arr[x][y]+" ");
   }
  }
 }

//外层循环:控制的是二维数组的长度;内层循环:控制的是一维数组的长度


猜你喜欢

转载自blog.csdn.net/xing_ran_ran/article/details/80042466