• Java数组的定义与使用


    一、数组概念

    可以将多个同一数据类型的数据,存储到同一个容器中

    1. 格式

    • 数据类型[] 数组名=new 数据类型[元素个数]
      • "数据类型"表示该数组中可以存放哪一类型的数据
      • "[]" 表示当前变量的数据类型为数组类型
      • "元素个数" 限制了当前数组中可以存放的数据个数
      • 创建数组时,java系统自动设置各个元素的初始值,因此称为静态初始化
    • 数据类型[] 数组名=new 数据类型[]{元素1,元素2,...}
      • 以上方式在创建数组时,设置了各个元素的初始值,因此称为动态初始化.
    • 数据类型[] 数组名={元素1,元素2,...}
      • 以上方式在创建数组时,设置了各个元素的初始值,因此称为动态初始化.同时省掉了new关键字,直接创建数组,称为直接量语法

    2. 数组的操作

    • 查询数组中元素:数组名[索引]
    • 修改数组中元素:数组名[索引]=值;
    • 设置数组中的元素:数组名[索引]=值;
    • 删除数组中的元素:数组名[索引]=默认值;

    二、 一维数组

    1. 声明与初始化

    正确的方式:
    	int num;//声明
    	num = 10;//初始化
    	int id = 1001;//声明 + 初始化
    		
    	int[] ids;//声明
    	//1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行
    	ids = new int[]{1001,1002,1003,1004};
    	//1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
    	String[] names = new String[5];
    
    	int[] arr4 = {1,2,3,4,5};//类型推断
    

    2. 一维数组的引用

    	//数组的角标(或索引从0开始的,到数组的长度-1结束。
    		names[0] = "王铭";
    		names[1] = "王赫";
    		names[2] = "张学良";
    		names[3] = "孙居龙";
    		names[4] = "王宏志";//charAt(0)
    

    3. 数组的属性 length

    System.out.println(names.length);//5
    System.out.println(ids.length);
    说明:
    数组一旦初始化,其长度就是确定的。arr.length
    数组长度一旦确定,就不可修改。
    

    4. 一维数组的遍历

    for(int i = 0;i < names.length;i++){
    	System.out.println(names[i]);
    }
    

    5.一维数组元素的默认初始化值

    • 数组元素是整型:0
    • 数组元素是浮点型:0.0
    • 数组元素是char型:0或'u0000',而非'0'
    • 数组元素是boolean型:false
    • 数组元素是引用数据类型:null

    6.一维数组的内存解析

    三、二维数组

    1.如何理解二维数组?

    数组属于引用数据类型
    数组的元素也可以是引用数据类型
    一个一维数组A的元素如果还是一个一维数组类型的,则,此数组A称为二维数组。

    2.二维数组的声明与初始化

    正确的方式:

    int[] arr = new int[]{1,2,3};//一维数组
    	//静态初始化
    	int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
    	//动态初始化1
    	String[][] arr2 = new String[3][2];
    	//动态初始化2
    	String[][] arr3 = new String[3][];
    //也是正确的写法:
    	int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
    	int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};//类型推断
    

    3.如何调用二维数组元素:

    	System.out.println(arr[1][0]);//2
    	System.out.println(arr[1][1]);//null
    	arr3[1] = new String[4];
    	System.out.println(arr3[1][0]);
    	System.out.println(arr3[0]);//
    

    4.二维数组的属性:

    	System.out.println(arr4.length);//3
    
    		System.out.println(arr4[0].length);//3
    
    		System.out.println(arr4[1].length);//4
    
    

    5.遍历二维数组元素

    	for(int i = 0;i < arr4.length;i++){		
    		for(int j = 0;j < arr4[i].length;j++){
    			System.out.print(arr4[i][j] + "  ");
    		}
    		System.out.println();
    }
    

    6. 二维数组内存解析

    四、数组常见算法

    1. 杨辉三角

    	// 1. 初始化二维而数组
    		int[][] arr1 = new int[10][];
    
    		for (int i = 0; i < arr1.length; i++) {
    			arr1[i] = new int[i + 1];
    			
    			// 给每行首位元素赋值
    			arr1[i][0] = arr1[i][i] = 1;
    			// 给每行非首位元素赋值
    			for (int j = 1; j < arr1[i].length - 1; j++) {
    				arr1[i][j] = arr1[i - 1][j - 1] + arr1[i - 1][j];
    
    			}
    
    		}
    		
    		// 遍历二维数组
    		for (int i = 0; i < arr1.length; i++) {
    			for (int j = 0; j < arr1[i].length; j++) {
    				System.out.print(arr1[i][j] + "	");
    			}
    			System.out.println();
    		}
    
    

    2. 冒泡排序

    int[] arr = new int[]{43,32,76,-98,0,64,33,-21,32,99};
    		
    		//冒泡排序
    		for(int i = 0;i < arr.length - 1;i++){
    			
    			for(int j = 0;j < arr.length - 1 - i;j++){
    				
    				if(arr[j] > arr[j + 1]){
    					int temp = arr[j];
    					arr[j] = arr[j + 1];
    					arr[j + 1] = temp;
    				}
    				
    			}
    			
    		}
    		for(int i = 0;i < arr.length;i++){
    			System.out.print(arr[i] + "	");
    		}
    

    五、操作数组的工具类

    		//1.boolean equals(int[] a,int[] b):判断两个数组是否相等。
    		int[] arr1 = new int[]{1,2,3,4};
    		int[] arr2 = new int[]{1,3,2,4};
    		boolean isEquals = Arrays.equals(arr1, arr2);
    		System.out.println(isEquals);
    		
    		//2.String toString(int[] a):输出数组信息。
    		System.out.println(Arrays.toString(arr1));
    		
    			
    		//3.void fill(int[] a,int val):将指定值填充到数组之中。
    		Arrays.fill(arr1,10);
    		System.out.println(Arrays.toString(arr1));
    		
    
    		//4.void sort(int[] a):对数组进行排序。
    		Arrays.sort(arr2);
    		System.out.println(Arrays.toString(arr2));
    		
    		//5.int binarySearch(int[] a,int key)
    		int[] arr3 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
    		int index = Arrays.binarySearch(arr3, 210);
    		if(index >= 0){
    			System.out.println(index);
    		}else{
    			System.out.println("未找到");
    		}
    		
    

    六、数组中的常见异常

    //1. 数组角标越界的异常:ArrayIndexOutOfBoundsExcetion
    		int[] arr = new int[]{1,2,3,4,5};
    		
    //		for(int i = 0;i <= arr.length;i++){
    //			System.out.println(arr[i]);
    //		}
    		
    //		System.out.println(arr[-2]);
    		
    //		System.out.println("hello");
    		
    		//2.2. 空指针异常:NullPointerException
    		//情况一:
    //		int[] arr1 = new int[]{1,2,3};
    //		arr1 = null;
    //		System.out.println(arr1[0]);
    		
    		//情况二:
    //		int[][] arr2 = new int[4][];
    //		System.out.println(arr2[0][0]);
    		
    		//情况三:
    		String[] arr3 = new String[]{"AA","BB","CC"};
    		arr3[0] = null;
    		System.out.println(arr3[0].toString());
    
  • 相关阅读:
    简明Secure boot介绍
    密码学有什么用?
    mkimage, no such file or dir
    嵌入式系统安全简介
    希尔排序
    jQuery选择器
    css 选择器
    安装 SQL Server 2008 和管理工具 SQL Server 2008 management studio 及相关问题解决
    mac下安装安卓开发环境
    IOS开发小记-内存管理
  • 原文地址:https://www.cnblogs.com/mengd/p/13257850.html
Copyright © 2020-2023  润新知