数组

1.数组的概念:是一种容器,可以存放多个数据值

2.数组的特点:

1.数组是一种引用数据类型;

2.数组当中的多个数据,类型必须统一;

3.数组的长度在程序运行期间不可改变。

3.两种常见的初始化方式:

1.动态初始化(指定长度);

2.静态初始化(指定内容)。

4.动态初始化数组格式:

数据类型 [] 数组名称  = new 数据类型 [ 数组长度 ] ;

解析含义:

左侧数据类型,也就是数组当中保存的数据,全部都是统一的什么类型;

左侧的中括号[],代表是一个数组;

左侧数组名称,是数组的名字;

左侧的new,代表创建一个数组的动作;

右侧数据类型,必须和左边数据类型保持一致;

右侧中括号长度,代表数组中可以保存多少个数据;

//动态初始化
public class Demo01Array {
    public static void main(String[] args) {
        int[] arrayA = new int[300];   //动态初始化
        
        //创建一个数组,能存放10个double类型
        double[] arrayB = new double[10];
        
        //创建一个数组,能存放5个字符串
        String[] arrayC = new String[5];
    }
}

5.静态初始化数组格式:

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

【注意事项】 虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,也可以自动推算出来长度。

public class Demo02Array {
    public static void main(String[] args) {
        //直接创建一个数组,里面装的全是int数字,具体为5,15,25
        int[] arrayA = new int[] {5,15,25};

        //创建一个数组,用来装字符串:“hello”、“World”、“JAVA”
        String[] arrayB = new String[]{"Hello","World","JAVA"};
    }
}

省略格式:

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

【注意事项】

1.静态初始化标椎格式可以拆分成2个步骤;

2.动态初始化也可以拆成2个步骤;

3.静态初始化一旦使用省略格式就不能拆成2个步骤。

【使用建议】

如果不确定数组当中的具体内容,用动态;确定了具体内容,则用静态。

6.访问数组元素进行获取

直接打印数组名称,得到的是数组对应的内存地址哈希值。

 

 访问数组的格式:数组名称 [ 索引值 ]

 索引值:就是一个int数字,代表数组当中的元素的编号

【注意】索引值从0开始,一直到“数组长度-1”为止

7.访问数组元素进行赋值

使用动态初始化数组时,其中的元素将会自动拥有一个默认值,规则如下:

如果是整数型,默认为0;

如果是浮点型,默认为0.0;

如果是字符型,默认为‘\u0000’;

如果是布尔型,默认为false;

如果是引用型,默认为null。

【注意】静态初始化其实也有默认值过程,只不过系统自动马上将默认值替换成为了大括号当中的具体数值。

8.Java中的内存划分

分为5个部分:

1.栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中。

  局部变量:方法的参数,或者是方法() 内部的变量;

  作用域:一旦超出作用域,立刻从栈内存当中消失。

2.堆(Heap):凡是new出来的东西,都在堆中。     数组就是在堆内存当中。 

  堆内存里面的东西都有一个地址值:16进制

  堆内存里面的数据,都有默认值,规则:

    如果是整数型,默认为0;

    如果是浮点型,默认为0.0;

    如果是字符型,默认为‘\u0000’;

    如果是布尔型,默认为false;

    如果是引用型,默认为null。

3.方法区(Method Area):存储.class相关信息,包含方法的信息。

4.本地方法栈(Native Method Stack):与操作系统相关。

5.寄存器(pc Register):与CPU相关。

9.一个数组的内存图

 

10.两个数组的内存图

 

 11.两个引用指向同一个数组的内存图

public static void main(String[] args) {
        int[] arrayA = new int[3];   //动态初始化
        System.out.println(arrayA);
        System.out.println(arrayA[0]);
        System.out.println(arrayA[1]);
        System.out.println(arrayA[2]);

        arrayA[1] = 10;
        arrayA[2] = 20;
        System.out.println(arrayA);
        System.out.println(arrayA[0]);
        System.out.println(arrayA[1]);
        System.out.println(arrayA[2]);

        //将arrayA数组的地址值,赋值给arrayB数组
        int[] arrayB = arrayA;
        System.out.println(arrayB);
        System.out.println(arrayB[0]);
        System.out.println(arrayB[1]);
        System.out.println(arrayB[2]);

        arrayB[1] = 100;
        arrayB[2] = 200;
        System.out.println(arrayB);
        System.out.println(arrayB[0]);
        System.out.println(arrayB[1]);
        System.out.println(arrayB[2]);
    }

 

12.数组越界异常

如果访问数组元素的时候,索引编号 并不存在,那么将会发生数组索引越界异常ArrayIndexOutOfBoundsException

 

 13.空指针异常

所有的引用类型变量都可以赋值为一个null值,但是代表什么也没有。

必须进行new初始化,否则会发生空指针异常NullPointerException。解决办法就是补上new。

int[] array = null;
array = new int[3];

14.获取数组长度

数组名称.length;

数组一旦创建,程序运行期间,长度不可改变。

 

 15.数组的遍历

public class Demo04Array {
    public static void main(String[] args) {
        int[] array = {15,25,35,45,50,4,3,2,1,9};
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}

16.求数组中的最大值

public static void main(String[] args) {
        int[] array= {5,12,23,43,13,46,76,8};
        int max=array[0];
        for (int i = 0; i < array.length; i++) {
            if(array[i]>max)
                max=array[i];
        }
        System.out.println("最大值"+max);
    }

17.数组元素反转

public static void main(String[] args) {
        int[] array = {10,21,31,43,54,5,78};
        int temp;
        for (int i = 0; i < array.length; i++) {
            System.out.print(" "+array[i]);
        }
        System.out.println();
        for (int i = 0; i <array.length/2 ;i++) {
            temp=array[i];
            array[i]=array[array.length-i-1];
            array[array.length-i-1]=temp;
        }
        for (int i = 0; i <array.length ; i++) {
            System.out.print(" "+array[i]);
        }
    }
posted @ 2020-01-05 19:23  佥刂同学  阅读(281)  评论(0)    收藏  举报