黑马程序员——数组

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

1.概念
同一种类型数据的集合。其实数组就是一个容器。
2.数组的好处
可以自动给数组中的元素从0开始编号,方便操作这些元素。
3.格式
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

int[] arr = new int[5];

元素类型[] 数组名 = new 元素类型[]{元素,元素, ……};

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

4.会出现异常
数组脚标越界异常(ArrayIndexOutOfBoundsException)

int[] arr = new int[2];
System.out.println(arr[3]);

访问到了数组中的不存在的脚标时发生。
空指针异常(NullPointerException)

int[] arr = null;
System.out.println(arr[0]);

arr引用没有指向实体,却在操作实体中的元素时。

5.数组常见的操作

import java.util.Arrays;

public class ArrayTest {

    public static void main(String[] args) 
    {
        /*
        给定一个数组{5,1,6,4,2,8,9}。

        1,获取数组中的最大值,以及最小值。

        2.排序

        3.对给定的数组进行反转。
        {3,1,5,6,2} --->
        {2,6,5,1,3}
        */

        //int[] arr={5,1,6,4,2,8,9};
//      System.out.println(getMax(arr));
//      System.out.println(getMin(arr));
        //sort(arr);
        //System.out.println(Arrays.toString(arr));

        int[] arr = {3,1,5,6,2};
        reserse(arr);
    }

    public static void reserse(int[] arr)
    {
        for(int start=0,end=arr.length-1;start<end;start++,end--)
        {
            swap(arr,start,end);
        }
        System.out.println(Arrays.toString(arr));
    }

    public static void swap(int[] arr,int a,int b)
    {
        int temp = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }

    public static int getMax(int[] arr)
    {
        int max=0;
        for(int x=1;x<arr.length;x++)
        {
            if(arr[max]<arr[x])
                max=x;
        }
        return arr[max];
    }
    public static int getMin(int[] arr)
    {
        int min=0;
        for(int x=1;x<arr.length;x++)
        {
            if(arr[min]>arr[x])
                min=x;
        }
        return arr[min];

    }

    public static void sort(int[] arr)
    {
        for(int a=0;a<arr.length;a++)
        {
            for(int b=a+1;b<arr.length;b++)
            {
                int temp=0;
                if(arr[a]>arr[b])
                {
                    temp=arr[a];
                    arr[a]=arr[b];
                    arr[b]=temp;
                }
            }
        }
        for(int ar:arr)
        {
            System.out.println(ar);

        }
    }



}

数组的二分法查找(数组必须为有序的)

import java.util.Arrays;

public class ArrayTest2 {

    public static void main(String[] args)
    {
//      int[] arr={5,1,6,4,2,8,9};
//      Arrays.sort(arr);
//      System.out.println(Arrays.toString(arr));
//      int a = Arrays.binarySearch(arr,2);
//      System.out.println(a);

        int[] arr = {3,2,1,5,4,2,9};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        System.out.println(halfSearch(arr,2));
    }
    public static int halfSearch(int[] arr,int a)
    {
        int min=0,max=arr.length,mid;

        while(min<=max)
        {
            mid = (min+max)>>1;
            if(a>arr[mid])
                min=mid+1;
            else if(a<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];

格式3: int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};

 定义一个名称为arr的二维数组
 二维数组中的有三个一维数组
 每一个一维数组中具体元素也都已初始化
 第一个一维数组 arr[0] = {3,8,2};
 第二个一维数组 arr[1] = {2,7};
 第三个一维数组 arr[2] = {9,0,1,6};
 第三个一维数组的长度表示方式: arr[2].length;

注意:
一维数组表示方式:int[] x; int x[]
二维数组表示方式:int[][] y; int y[][]; int[] y[]
int[] x,y[]; //x表示一维数组,y表示二维数组。
==>int[] x; int [] y[];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值