首页 > 代码库 > java基础总结——数组

java基础总结——数组

数组需要掌握的:

  1、数组的定义
  2、数组的内存分配及特点
  3、数组操作常见问题
  4、数组常见操作
  5、数组中的数组(理解)

数组唯一属性:length,即数组的长度。

1.数组定义

  格式一:

    元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
     示例:int[] arr = new int[5];
  格式二:

    元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
       示例:int[] arr = new int[]{3,5,1,7};
           int[] arr = {3,5,1,7};

区别:方式一定义了数组的长度,但是没有给数组赋值,数组有默认值,和数据类型默认值一样;

   方式二定义数组,并赋值,默认指定数组的长度。推荐使用方式二

  

 

2.数组的内存分配及特点

技术分享

 

技术分享

 

3、数组常见操作

 

3.1数组遍历

  将数组中的每个数据分别取出,for循环来完成 数组.length数组的长度,也就是存储数据的个数,数组中的最大角标值 = 数组.length - 1

 

 1 /*
 2   遍历数组,已经用for循环解决掉了
 3   数组越来越多
 4   如何去遍历呢
 5   采用函数的方式,将遍历数组的功能,定义在函数中
 6   直接调用函数的遍历功能就可以了
 7 */
 8 class ArrayDemo5{
 9     /*
10      分析步骤:
11       这个函数就负责遍历数组,并打印在命令行上
12       1. 有没有运算结果,没,void
13       2. 有没有未知数参与函数运算,就那数组
14     */
15 
16     /*
17     printArray函数,就负责遍历数组,打印数组
18     调用这个函数的时候,传递函数进来
19     */
20     public static void printArray(int[] arr)
21     {
22         for(int x = 0; x<arr.length ;x++){
23             if(x!=arr.length-1){
24                 System.out.print(arr[x]+",");
25             }
26             else{
27              System.out.print(arr[x]);
28             }
29     
30         }
31         System.out.println();
32     }
33     public static void main(String[] args) 
34     {
35         int[] arr ={34,435,324,324,3246,63,3};
36         int[] arr1 ={34,435,324,324,3246,63,3,5};
37         printArray(arr);
38     //    printArray(arr1);
39     }
40 }

 

 

 

 

3.2数组求最值

  遍历数组,对每一个数组中的元素进行比较,并且记录 较大数据的下标 必须定义函数完成

 

 1 /*
 2   数组中获取最值的操作
 3   最大值,最小值
 4 */
 5 class  ArrayDemo6{
 6     public static void main(String[] args) {
 7         int[] arr = {4,3,2,6,1,0};
 8         int max = getMax(arr);
 9 
10         System.out.println("max="+max);
11     }
12     /*
13      定义函数,来获取数组中的最大值
14      1 明确函数计算后的结果是什么,int
15      2 未知数据就是数组
16     */
17 
18     public static int getMax(int[] arr){
19         //定义变量,记录数组中0下标上的数据
20         int max = 0;//4
21         //遍历数组,分别进行比较,保留最大值
22         for(int x = 0 ; x<arr.length;x++){
23             if(arr[max]<arr[x]){
24                max = x;   
25             }
26         }
27         return arr[max];
28     }
29 
30     public static int getMin(int[] arr){
31         int min = 0;//4
32         //遍历数组,分别进行比较,保留最大值
33         for(int x = 0 ; x<arr.length;x++){
34             if(arr[min]>arr[x])
35             {
36                min = x;  
37             }
38         }
39         return arr[min];
40     }
41 }

 

 

 

3.3数组排序

 

1、选择排序

 

? 利用原理是:从第0个下标开始进行比较和较大的数进行换位(借用第三方变量)第一次比较完后,从第1个小标开始进行比较和较大的数进行换位(借用第三方变量)

 

? 特点:第一次都比较完后,最小的数出现在了0下标位置上嵌套的for来完成

 

2、冒泡排序

 

相邻两个数据进行比较,根据结果换位

 

 

 

两种排序示意图

 

技术分享

 

3、代码实例

 

 1         /*
 2          选择排序的三个步骤
 3          1. 遍历数组,把数组中每个元素分别取出
 4          2. 出去后,进行大小的比较
 5          3. 进行数组的换位置
 6         */
 7         //选择排序
 8         for (int x = 0; x < arr.length - 1; x++) {
 9             for (int y = x + 1; y < arr.length; y++) {
10                 // x=1 y=1+1=2
11                 if (arr[x] > arr[y])// arr[1]>arr[2]
12                 {
13                     int temp = arr[x];
14                     arr[x] = arr[y];
15                     arr[y] = temp;
16                 }
17             }
18         }
19 
20         /*
21          定义函数实现冒泡排序
22          1. 确定函数运算后没有返回值
23          2. 不确定的数据就是数组
24 
25          说明:
26            内圈循环,-x是为了比较的次数一次一次在减少
27                       -1是为了防止数组越界异常
28           希尔排序,公认的效率最高的排序方式
29           插入形式的排序算法
30         */
31         //冒泡排序
32         for(int x =0 ;x<arr.length; x++){
33            for(int y = 0 ; y <arr.length-x-1;y++){
34               if(arr[y]>arr[y+1]){
35                  int temp = arr[y];
36                  arr[y] = arr[y+1];
37                  arr[y+1] = temp;
38               }
39            }
40         }

 

 

 

 

4、数组操作常见问题

ArrayIndexOutOfBoundsException 数组下标越界异常
NullPointerException 空指针异常,引用类型中最常见

 

java基础总结——数组