Java 数组

 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。

Java 语言中提供的数组是用来存储固定大小的同类型元素。

 

数组的基本概念
 数组:在内存中开辟的一串用于存储 相同数据类型 的 连续空间
 数组名:表示连续空间的首地址,通过首地址可以依次访问数组所有元素。
 下标:元素在数组中的排序叫做下标,从0开始 
 

   

 数组的声明:
1,声明一个数组
2 ,  给数组分配空间
3 ,  给数组赋值
4,访问数组数据,使用数组下标访问
注意:数组长度声明后无法改变,也无法追加

 数组声明的缩写

 

 

例:
 int[] arr={1,2,3,4,5} 最常用

 

 

实例:

(一)下面语句首先声明一个数组arr,然后输入一个数字判断该数字是否在数组中,如果在返回其下标

 

System.out.println("输入一个数字:1,7,3,6,5");
		int num=sc.nextInt();
		int i;
		int arr[]={1,7,3,6,5};
		for ( i = 0; i < arr3.length; i++) {
		for (int j = 0; j < arr.length; j++) {
				if (num==arr3[i]) {
					System.out.println("数组的下标:"+i);
					return;
				}
				
		}	
}

  

 (二)使用数组实现冒泡排序,实现数字的排序,只能是升序排序

int arr2[]={90,55,66,45,77,86};
        for (int i = 0; i < arr2.length-1; i++) {
            for (int j = 0; j < arr2.length-1-i; j++) {
                if (arr2[j]>arr2[j+1]) {
                    int a=arr2[j];
                    arr2[j]=arr2[j+1];
                    arr2[j+1]=a;        
                }
            }
            
        }

 

处理数组

数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 foreach 循环。这也使得在我们使用数组的时候,循环是我们经常使用的遍历手段

  // 打印所有数组元素
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
      // 计算所有元素的总和
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      // 查找最大元素
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);

 运行代码结果如下:

 

遍历数组的两种方式:

 

1,使用for循环遍历数组

for (int i = 0; i < 5; i++) {
        System.out.print(arr[i]);    
}

2,使用foreach遍历数组

            int[] arr2={7,2,6,3,4};
        for(int num:arr2){
            System.out.println(num);
        }

 

多维数组

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

例如:

 

 

数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][每个一维数组的长度];

int[][] arr = new int[3][5];---定义了一个整型的二维数组,其中包含3个一维数组,每个一维数组可以存储5个整数

arr[0]---下标为0的位置上的一维数组

arr[1][3]---如果要获取具体的元素需要两个下标

数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][];

 

int[][] arr = new int[3][];----表示一个包含了三个整型的一维数组的二维数组(-------------这句话好好理解------------------------)

 

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

int[][] arr = {{2,5},{1},{3,2,4},{1,7,5,9}};

注意:[]在变量名前的时候,是紧跟数据类型的;如果[]在后,则是属于当前变量名。

二维数组的应用

经典问题打印杨辉三角

//从控制台获取行数
Scanner s = new Scanner(System.in);
int row = s.nextInt();
//根据行数定义好二维数组,由于每一行的元素个数不同,所以不定义每一行的个数
int[][] arr = new int[row][];
//遍历二维数组
for(int i = 0; i < row; i++){
    //初始化每一行的这个一维数组
    arr[i] = new int[i + 1];
    //遍历这个一维数组,添加元素    
    for(int j = 0; j <= i; j++){
        //每一列的开头和结尾元素为1,开头的时候,j=0,结尾的时候,j=i
        if(j == 0 || j == i){
            arr[i][j] = 1;
        } else {//每一个元素是它上一行的元素和斜对角元素之和
            arr[i][j] = arr[i -1][j] + arr[i - 1][j - 1];
        }
        System.out.print(arr[i][j] + "\t");
    }
    System.out.println();
}

代码运行结果:

 

 Arrays工具类

 Arrays工具类是java提供的用于操作还是数组的工具类,位于java.util包中

Arrays.equals(arr, arr1)
比较的原理,逐一比对两个数组中的每一位置,是否相等
而使用==进行判断,是比较两个数组中存储的地址,是否相等


System.out.println(arr == arr1);//数组中传递的是地址
System.out.println(Arrays.equals(arr, arr1));//逐一比对每个位置的是否相等

Arrays.sort(arr2)
对数组进行升序排列,修改原数组
Arrays.sort(arr2,3,6)对数组的指定区域进行排序,包含起始下标,不含结束下标,区间

 

 Arrays.toString(arr2):将数组转换为字符串,转换之后的格式[1,1,1,1,1,1,1]

 

Arrays.fill(arr3, 12):将数组中的每一个数字都赋指定的数值

 

 Arrays.copyOf(arr4, arr4.length);:将arr4数组中的指定个数,copy到一个新的数组中
 如果个数>arr4.length,则新数组中多于的位置用默认值补齐
 如果个数<arr4.length,则只copy原数组中的前半部分


 Arrays.binarySearch(arr5, 4):查找数组中指定元素,如果找到返回下标,如果没由返回负数
 使用这个方法必须是有序的数组,可以先使用Arrays.sort(arr)进行排序

posted on 2018-04-08 17:40  Code_任  阅读(302)  评论(0编辑  收藏  举报

导航