数组 原创

1599-张同学

发表文章数:24

首页 » Java » 正文

数组的定义

一、数组的概念:是一种容器,可以同时存放多个数据值。

二、数组的特点:

  1. 数组是一种引用数据类型
  2. 数组当中的多个数据,类型必须统一
  3. 数组的长度在程序运行期间不可改变

三、数组的初始化:在内存当中创建一个数组,并且向其中赋予一些默认值。

常见的两种初始化方式:

  • 动态初始化(指定长度)<在创建数组时,直接指定数组当中的数据元素个数>
    动态初始化数组的格式:
    数据类型[] 数组名称 = new 数据类型[数组长度];
public class Demo01Array {

    public static void main(String[] args) {
        // 创建一个数组,里面可以存放300个int数据
        int[] arrayA = new int[300];

        // 创建一个数组,能存放10个double类型的数据
        double[] arrayB = new double[10];

        // 创建一个数组,能存放5个字符串
        String[] arrayC = new String[5];
    }

}
  • 静态初始化(指定内容<在创建数组时,不直接指定数据个数多少,而是直接将具体的数据内容进行指定>
    静态初始化标准格式:
    数据类型[] 数组名称 = new 数据类型[] { 元素1, 元素2, … };
    静态初始化省略格式:
    数据类型[] 数组名称 = { 元素1, 元素2, … };
public class Demo02Array {

    public static void main(String[] args) {
        // 直接创建一个数组,里面装的全都是int数字,具体为:3、6、9、12
        int[] arrayA = new int[] { 36912};

        // 创建一个数组,用来装字符串:"Apple"、"Banana"、"Orange"
        String[] arrayB = new String[] { "Apple""Banana""Orange"};
         
         // 静态初始化的省略格式
        int[] arrayC = { 10, 20, 30 };
    }

}

PS:
1.静态初始化没有直接指定长度,但是仍然会自动推算得到长度。

2.如果不确定数组当中的具体内容,建议用动态初始化;否则,已经确定了具体的内容,用静态初始化。

Java中内存的划分

数组
                    原创

一个数组(arrayA)的内存图&&访问数组元素

public class Demo01ArrayOne {

    public static void main(String[] args) {
        int[] array = new int[3]; // 动态初始化
        System.out.println(array); // [I@50cbc42f 地址值
        System.out.println(array[0]); // 0
        System.out.println(array[1]); // 0
        System.out.println(array[2]); // 0
        System.out.println("==============");

        // 改变数组当中元素的内容
        array[1] = 10;
        array[2] = 20;
        System.out.println(array); // [I@50cbc42f 地址值
        System.out.println(array[0]); // 0
        System.out.println(array[1]); // 10
        System.out.println(array[2]); // 20
    }

}

数组
                    原创
PS:0x666是假设的地址值,0x表示16进制

两个引用指向同一个数组(int arrayB[]=arrayA)的内存图

public class Demo03ArraySame {

    public static void main(String[] args) {
        int[] arrayA = new int[3];
        System.out.println(arrayA); // 地址值
        System.out.println(arrayA[0]); // 0
        System.out.println(arrayA[1]); // 0
        System.out.println(arrayA[2]); // 0
        System.out.println("==============");

        arrayA[1] = 10;
        arrayA[2] = 20;
        System.out.println(arrayA); // 地址值
        System.out.println(arrayA[0]); // 0
        System.out.println(arrayA[1]); // 10
        System.out.println(arrayA[2]); // 20
        System.out.println("==============");

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

        arrayB[1] = 100;
        arrayB[2] = 200;
        System.out.println(arrayB); // 地址值
        System.out.println(arrayB[0]); // 0
        System.out.println(arrayB[1]); // 100
        System.out.println(arrayB[2]); // 200

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

}

数组
                    原创
PS:输出数组B之后再输出数组A,会发现结果和B的结果一样,这是因为本质上arrayA和arrayB都指向了一个数组

常见问题1:空间索引越界

ArrayIndexOutOfBoundsException

数组的索引编号从0开始,一直到“数组的长度-1”为止。(0~n-1)

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

常见问题2:空指针异常

NullPointerException

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

数组必须进行new初始化才能使用其中的元素

如果只是赋值了一个null,没有进行new创建,就会发生空指针异常。

解决:补上new

**

public class Demo02ArrayNull {
    public static void main(String[] args) {
        int[] array = null;
       array = new int[3];
        System.out.println(array[0]);
    }
}

**

获取数组的长度

.length

int[] arrayD = {10, 20, 30, 3, 5, 4, 6, 7, 8, 8, 65, 4, 44, 6, 10, 3, 5, 4, 6, 7, 8, 8, 65, 4};

        System.out.println(arrayD.length); // 24

数组元素的遍历输出

 for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }

数组元素的反转

数组元素的反转:
本来的样子:[1, 2, 3, 4]
之后的样子:[4, 3, 2, 1]
初始化语句:int min = 0, max = array.length – 1
条件判断:min < max
步进表达式:min++, max–
循环体:用第三个变量交换

 for (int min = 0, max = array.length - 1; min < max; min++, max--) {
        int temp = array[min];
        array[min] = array[max];
        array[max] = temp;
    }

未经允许不得转载:作者:1599-张同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《数组 原创》 发布于2021-02-24

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录