Java数组详解

Java数组详解

数组概述

  • 数组是相同类型数据的有序集合
  • 数组描述的是相同类型(比如int类型)的若干个数据,按照一定的先后次序排列组合而成
  • 数组中的每一个元素称作一个数组元素,每个数组元素可以通过一个下标来访问

数组的声明和创建

  • 首先需要声明数组变量,才可以在程序中使用

  • 声明数组变量语法:

    dataType[] arrayName;//类型[] 数组名
    dataType arrayName[];//类型 数组名[]
    //首选第一种声明方式
    
  • Java语言使用new操作符创建数组,语法为:

    dataType[] arrayName=new dataType[arraySize]
        //数组类型[] 数组名=new 数组类型[数组大小]
    
  • 数组元素通过索引访问,数组索引从0开始

  • 获取数组长度:

    arrays.length
    
  • 举例:

    package arrays;
    
    public class arraysDemo01 {
        public static void main(String[] args) {
            //声明一个数组
            int[] a;
            //创建一个数组
            a=new int[5];
            // 给数组中元素赋值
            a[0]=1;
            a[1]=2;
            a[2]=3;
            a[3]=4;
            a[4]=5;
            System.out.println(a[2]);//输出数组中下标为2的元素
            //计算数组中元素的和
            int sum=0;
            for (int i=0;i<a.length;i++){ //获取数组长度:a.length
                sum+=a[i];
            }
             System.out.println("元素总和为:"+sum);
        }
    }
    
  • 内存分析

    • 堆:存放new的对象和数组,可以被所有的线程共享,不会存放别的对象引用
    • 栈:存放基本变量类型(包含这个基本类型的具体数值),引用对象的变量(存放这个引用在堆里的具体地址,不是具体的对象和数组)
    • 方法区:可以被所有的线程共享,包含了所有的class和static变量
  • 三种初始化方式

    • 静态初始化

      int[] a={1,2,3,4};
      int[] mans={new Man(1,1),new Man(2,2)};
      
    • 动态初始化

      int[] b=new int[3];
      b[0]=1;
      b[1]=2;
      b[2]=3;
      
    • 数组的默认初始化

      • 数组是引用类型,元素相当于实例变量,所以数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化
      int[] b=new int[3];
      //b[0]、b[1]、b[2]默认为0
      
  • 数组的四个基本特点

    • 长度是确定的,数组一旦被创建,它的大小就是不可以改变的
    • 数组中的元素可以是相同数组类型,包括基本类型和引用类型,但是必须是相同类型
    • 数组变量属引用类型,数组也可以看做是对象,数组中的每个元素相当于该对象的成员变量
    • 数组本身就是对象,数组对象本身也是在堆中的
  • 数组边界

    • 数组下标的合法区间:[0,length-1],如果越界就会报错、

      public class arraysDemo02 {
          public static void main(String[] args) {
      
            int[] a=new int[2];
              System.out.println(a[2]);
      //ArrayIndexOutOfBoundsException:数组下标越界异常
          }
      }
      
  • 小结:

    • 数组元素必须是相同元素的有序集合
    • 数组也是对象,数组元素相当于对象的成员变量
    • 数组长度的确定的,不可变的,如果越界,会报:ArrayIndexOutOfBoundsException

数组的使用

package arrays;

public class arraysDemo03 {
    public static void main(String[] args) {

      int[] array={2,12,3,65,455,662,23};
      //遍历数组
        for(int i=0;i<array.length;i++){
            System.out.println(array[i]);
        }
        System.out.println("==============");
       //求数组元素的和
        int sum=0;
        for (int i=0;i<array.length;i++){
            sum+=array[i];
        }
        System.out.println(sum);
        System.out.println("=================");
        //查找最大元素
        int result=array[0];
        for (int i=1;i<array.length;i++){
            if (array[i]>result){
                result=array[i];
            }
        }
        System.out.println("max="+result);
        System.out.println("==============");
        //反转数组
        int[] result1=new int[array.length];
        for (int i=0,j=array.length-1;i<array.length;i++,j--){
            result1[j]=array[i];
        }
         for(int i=0;i<result1.length;i++)
        System.out.println(result1[i]);
    }
}
//以上对数组的基本使用,可以写成方法,然后再main方法中调用会更符合编程的使用习惯

多维数组介绍

  • 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组

  • 二维数组

    int[][] a=new int[2][5];//创建一个2行5列的二维数组
    
  • 举例:

    package arrays;
    
    public class arraysDemo04 {
        public static void main(String[] args) {
          //创建一个[4][2]的二维数组
            int[][] arrays={{1,2},{2,3},{3,4},{4,5}};
            //1,2    arrays[0]
            //2,3    arrays[1]
            //3,4    arrays[2]
            //4,5    arrays[3]
            System.out.println(arrays[0][0]);//输出arrays[0]中的下标为0的元素,即1
            System.out.println(arrays[1][1]);//输出arrays[1]中的下标为1的元素,即3
            
            System.out.println("==============");
            //遍历二维数组
            for (int i=0;i<arrays.length;i++){
                for (int j=0;j<arrays[i].length;j++){
                    System.out.println(arrays[i][j]);
                }
            }
        }
    }
    

Arrays类

  • 数组的工具类为java.util.Arrays

  • Arrays类中的方法都可以直接调用

  • Arrays类使用举例:

    import java.util.Arrays;
    
    public class arraysDemo05 {
        public static void main(String[] args) {
          int[] arrays={12,33,2,35,55,222,10};
            System.out.println(arrays);//输出为[I@2d98a335
            //打印数组Arrays.toString(arrays)
            System.out.println(Arrays.toString(arrays));//输出为[12, 33, 2, 35, 55, 222, 10]
            //数组排序
            Arrays.sort(arrays);//升序
            System.out.println(Arrays.toString(arrays));
        }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值