一·数组

1.当需要在java程序中记录单个数据内容时,则申明一个变量即可。

2.当需要在java程序中记录多个类型相同的数据内容时,则声明一个一维数组即可,一维数组的本质就是在内存空间中申请一段连续的存储单元。

3.数组是相同数据类型的多个元素容器,元素按线性顺序排列,在java语言中体现为一种引用数据类型。

二·一维数组的声明方式

String[] arr = new String[5];

调用数组的length属性可ui获取数组长度;

可以通过下标的方式去访问。对于长度为n的数组范围是0 ~n-1;

public static void main(String[] args) throws Exception{
int[] arr1 = new int[2];
System.out.println(arr1.length);
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);//java.lang.ArrayIndexOutOfBoundsException 数组下标越界异常
}
//循环打印
    for(int i=0;i<arr1.length;i++){
        System.out.println(arr1[i]);
    }
//数组初始化方式
int[] arr1 = new int[5];  //动态初始化
int[] arr2 = {1,2,3}; //静态初始化
//特殊写法,静态方式
int[] arr3 = new int[]{1,2,3};

三·内存分析

  1. 栈区:用于存放程序运行过程当中的所有的局部变量,一个运行的java程序从开始到结束会有多次变量声明。

  2. 堆区:JVM会在其内存空间中开辟一个称之为堆的存储空间,这部分空间用于存储用new关键字创建的数组和对象。

四·数组的优缺点

  1. 可以直接通过下标的方式访问指定元素的位置,速度很快。

  2. 要求所有元素的数据类型一致。

  3. 要求内存空间必须连续,长度一旦确定就不能修改。

  4. 增加和删除元素时需要移动大量元素,效率低。

五·数组的拷贝

//数组的拷贝
int[] arr = {11,22,33,44,55};
int[] brr = new int[3];
System.arraycopy(arr,1,brr,0,3); //表示从数组arr中下标从1开始的三个元素拷贝到数组brr中下标从0开始的位置
for(int i =0;i<brr.length;i++){
System.out.println(brr[i]);
}

六·数组的工具类:

java.util.Arrays类可以实现堆数组中元素的便利查找排序等操纵

七·数组工具类常用的方法

  1. toString 输出数组中的内容

  2. fil 将参数指定元素复制给数组所有的元素

  3. equals 判断两个数组元素内容和次序是否相同

  4. sort 堆数组中的元素进行从小到大的排序

  5. binarySearch 从数组中查找参数指定元素所在的位置

 

/*
* 编程实现数组工具类的使用
* */
public static void main(String[] args) {
   //1.声明一个初始值为10,20,30,40,50的一维数组
   int[] arr = {10,20,30,40,50};
   //2.使用原始方式打印数组中的所有元素,要求打印格式为:[10,20,30,40,50]
   System.out.println("第一个数组中的元素有:"+"[");
   for(int i=0;i<arr.length;i++){
       if(i == arr.length-1){
           System.out.println(arr[i]);
      }else{
           System.out.println(arr[i]+", ");
      }
  }
   System.out.println("]");


   //3.使用数组工具类实现数组中所有的元素打印
   System.out.println("第一个数组的元素有"+ Arrays.toString(arr));
   System.out.println("==============");
   int[] arr2 = new int[5];
   Arrays.fill(arr2,7);
   System.out.println(Arrays.toString(arr2));

   //排序
   int[] scores = {10,20,80,70,50,30};
   Arrays.sort(scores);
   System.out.println(Arrays.toString(scores));

   //查找
   System.out.println(Arrays.binarySearch(scores,10)); //如果不存在则返回负数
}

八·二维数组

//声明和使用

int[][] arr = new[行数][列数];
int[][] brr = new [2][2]{{1,2},{3,4}}

 

int[][] brr = new int[2][6];
int[] arr = new int[6];
brr.length代表数组brr的长度,也就是元素的个数,也就是一维数组的个数, 也就是行数
brr[0].length代表数组中第一个元素的长度,也就是一维数组的长度,也就是第一行的列数。

//1.声明一个具有2行三列元素类型为Int类型的二维数组
    int[][] arr = new int[2][3];
    //打印数组中每个元素
    //使用外层for循环控制打印的行数
    for(int i=0;i<arr.length;i++){
        //使用内层for循环控制打印的列数
        for(int j =0;j<arr[i].length;j++){
            System.out.print(arr[i][j]);
        }
        System.out.println();
    }
    //实现二维数组的赋值
    int cnt =1;  //实现二维数组中的元素赋值
    for(int i =0;i<arr.length;i++){
        for(int j =0;j<arr[i].length;j++){
            arr[i][j] = cnt++;
        }

    }

    for(int i=0;i<arr.length;i++){
        //使用内层for循环控制打印的列数
        for(int j =0;j<arr[i].length;j++){
            System.out.print(arr[i][j]);
        }
        System.out.println();
    }
posted on 2020-09-16 22:23  我说我是大佬你信么  阅读(220)  评论(0)    收藏  举报