Java语言基础:数组

阅读目录:

  1.数组的定义

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

  3.数组操作常见问题

    

  4.数组常见操作

    获取最值(最大值,最小值)

    排序(选择排序,冒泡排序)

    折半查找(二分查找)

  5.数组中的数组

1.数组的定义

概念:同一种类型数据的集合。其实数组就是一个容器。

数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。

格式1:

  元素类型【】数组名 = new 元素类型【元素个数或数组长度】;

实例: int[] arr = new int[5];

格式2:

  元素类型【】数组名 = new 元素类型【】{元素,元素,....};

实例:int [] arr = new int[] {3,5,1,7}

    

示例:

class ArrayDemo
{
    public static void main(String[] args)
    {
        //元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
        //示例:int [] arr = new int[5];
        
        int age =3
        int [] arr = new int[3];   //建了一个箱子arr, 里面有3个格子、顾头不顾尾
        arr[0] = 89;
        System.out.println(arr[0]);
    }
}

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

内存的划分:
1.寄存器——处理cpu
2.本地方法区——所在系统相关,java虚拟机的版本,分版本,
3.方法区——欠
4.栈内存——存储的都是局部变量。而且变量所属的作用域一旦结束,该变量就自动释放。
5.堆内存——存储是数组和对象(其他数组就是对象)凡是new建立在堆中。
    特点:
    1.每一个实体都有首地址值
    2.堆内存中的每一个变量都有默认初始值,根据类型的不同而不同,整数是0.小数是0

 基本格式:

class ArrayDemo3
{
    public static void main(String[] args)
    {
        //格式1
        /*
        需要一个容器,但是不明确容器的具体数据。
        */
        int[] arr = new int[3];

        /*
        需要一个容器,存储已经知道的具体数据。
        */
        //元素类型[] 数组名 = new 元素类型[] {元素,元素,...};
        int[] arr = new int[] {11,22,33};
        int[] arr = {11,22,33};
    }
}

3.数组操作常见问题

class ArrayDemo2
{
    public static void main(String[] args)
    {
        int[] arr = new int[3];
        System.out.println(arr[3]);//ArrayIndexOutOfBoundsException;

        //arr = null;
        System.out.println(arr[0]);//NullPointerException
        //当引用型变量没有任何实体指向时,还在用其操作实体。就会发生该异常
        System.out.printl(arr);//  [I@c17164]
    }
}

4.数组常见操作

   获取最值(最大值,最小值)

class ArrayDemo5
{
    public static void main(String[] args)
    {
        /*
        数组的常见操作:存和取。数组的便遍历
        核心思想:就是对角标的操作。

        获取数组中的最大值。
        思路:
        1.需要进行比较。并定义变量记录每次比较后较大的值
        2.对数组中的元素进行遍历取出,和变量中记录的元素进行比较
        3.如果遍历到的元素大于变量中记录的元素,就用变量记录住该大的值
        4.遍历结果,该变量记录就是最大值。
        定义一个功能来实现,
        明确一:结果,是数组中的元素。int
        明确二:未知内容,数组
        */
        int[] arr = {11,22,3public static int
        int max = getMax(arr);
        System.out.println("max=" + max)
    }

    public static int getMax(int[] arr)
    {
        //定义变量记录较大的值。
        int max = arr[0];
        for(int x=1; x<arr.length; x++)
        {
            if(arr[x]>max)
                max = arr[x];
        }
        return max;
    }

    public static int getMax_2(int[] arr)
    {
        //定义变量记录较大的值。
        int maxIndex = arr[0];
        for(int x=1; x<arr.length; x++)
        {
            if(arr[x]>arr[maxIndex])
                maxIndex = x;
        }
        return arr[maxIndex  ];
    }
}

   排序(选择排序,冒泡排序)

class ArrayDemo6
{
    //遍历数组的功能。
    public static void printArray(int[] arr)
    {
        System.out.print("[");
        for(int x=0; x<arr.length; x++)
        {
            if(x!=arr.length-1)
                System.out.print(arr[x]+", ");
            else
                System.out.println(arr[x]+"]");
        }
    }

    public static void main(String[] args)
    {
        //选择排序
        int[] arr = {11,22,33,44,55};

        printArray(arr);
        selectSort(arr);
        printArray(arr);
    }

    /*
    选择排序
    */
    public static int[] 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;
                }
            }
        }
    }
}

   折半查找(二分查找)

5.数组中的数组

 

原文地址:https://www.cnblogs.com/zhongbokun/p/10841940.html