黑马程序员 java基础之数组


静态初始化:

 int[] arr = new int[2];//建议格式


int arr[] = new int[2];//也可以

 

int[] arr = new int[]{3,1,6,5,4};

int[] arr = {3,1,6,5,4};

 

int[] arr = new int[5];

arr[0] = 90;

arr[1] = 80;

 boolean型数组默认值为false.

数组操作常见问题:

  ArrayIndexOutOfBoundsException: 操作数组时,访问到了数组中不存在的角标。

  NullPointerException:空指针异常。当引用没有任何指向值为null的情况,该引用还在用于操作实体。

数组常见操作-遍历

获取数组中的元素。通常会用的遍历。

数组中有一个属性可以直接获取到数组元素个数。length.

使用方式:数组名称.length

 

排序-选择排序、冒泡排序

 选择排序特点:

内循环结束一次,最值出现在头角标位置上。

 public static void selectSort(int[] arr)

{

for (int x=0; x<arr.length-1 ; x++)
{
for(int y=x+1; y<arr.length; y++)
{

         if(arr[x]>arr[y])
{
  /*
int temp = arr[x];
arr[x] = arr[y];
arr[y]= temp;
*/
swap(arr,x,y);
}

}
}

 冒泡排序:相邻的两个元素进行比较,如果符合条件换位。

 public static void bubbleSort(int[] arr)

{
    for(int x=0; x<arr.length-1; x++)
    {                                    
        for(int y=0; y<arr.length-x-1; y++)//-x:让每一次比较的元素减少,-1:避免角标越界。
        {
            if(arr[y]<arr[y+1])
            {
                /*
                int temp = arr[y];
                arr[y] = arr[y+1];
                arr[y+1] = temp;
                
*/
                swap(arr,y,y+1);
            }
        }
    }
}

 抽取位置置换功能:

//置换数组中两个元素的值
public static void swap(int[] arr,int a,int b)
{

      int temp = arr[a];

      arr[a] = arr[b];

      arr[b] = temp;

}

 Java中已经定义好的一种排序方式。开发中,对数组排序。要使用该句代码:

Arrays.sort(arr);

 数组的查找操作

 //定义功能,获取key第一次出现在数组中的位置。如果返回是-1,那么代表该key在数组中不存在。

public static int getIndex(int[] arr,int key)
{
    for(int x=0; x<arr.length; x++)
    {
        if(arr[x]==key)
        return x;
    }
    return -1;
}

 练习:有一个有序的数组,想要将一个元素插入到该数组中,

还要保证该数组是有序的。如何获取该元素在数组中的位置。

 public static int getIndex_2(int[] arr,int key)

{
    int min = 0,max = arr.length-1,mid;
    while(min<=max)
    {
        mid = (max+min)>>1;
        if(key>arr[mid])
            min = mid + 1;
        else if(key<arr[mid])
            max = mid - 1;
        else
            return mid;
    }
    return min;
}

  二维数组:

数组中的数组

二维数组[][]

格式1: 

  int[][] arr = new int[3][2];

定义了名称为arr的二维数组

二维数组中有3个一维数组

每一个一维数组中有2个元素

一维数组的名称分别为arr[0], arr[1], arr[2]

给第一个一维数组1角标位赋值78写法是:arr[0][1] = 78;

格式2: 

          int[][] arr = new int[3][];

二维数组中有3个一维数组

每个一维数组都是默认初始化值null

可以对这三个一维数组分别进行初始化

arr[0] = new int[3];

arr[1] = new int[1];

arr[2] = new int[2];

 

二维数组练习

定义一维数组: 

int[] x; int x[];

定义二维数组:

int[][] y; int y[][]; int[] y[];

int[] x,y[];//x一维,y二维。

int[] x;

int[] y[];


a.
x[0] = y;//error

 

b.
y[0] = x;//yes

 

c.
y[0][0] = x;//error

 

d.
x[0][0] = y;//error

 

e.
y[0][0] = x[0];//yes

 

f.

x=y;//error 

 

 

 

 

 

 

 

 

posted @ 2013-05-14 17:13  xiewen3410  阅读(88)  评论(0编辑  收藏  举报