ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

一维数组和二维数组的使用

2022-06-21 14:36:53  阅读:123  来源: 互联网

标签:arr 数组 int 数据类型 索引 二维 一维


数组

一维静态数组的格式是

完整格式:
数据类型 [] 数组名 = new 数据类型[]{元素};
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3..};
int[] arr = new int[]{11,22,33};

元素是数组内数据的一种的专业称呼!!!

简化格式:
数据类型 [] 数组名  = {元素}
数据类型 [] 数组名 = {元素1,元素2,元素3..};
int[] arr = {11,22,33};

一维动态数组的格式是

数组的动态初始化
- 介绍 : 在初始化的时候, 只需要指定长度, 系统就会分配默认值 (初始值)
- 格式 : 数据类型[] 数组名 = new 数据类型[长度];

当动态数组没有赋值的时候,各个数据类型的默认值是:整数 : 0 小数 : 0.0 布尔 : false 字符 : '\u0000' -- Unicode字符 -- 常见的体现是空白字符 引用数据类型: null

 

  • 07-两种初始化的对比

    • 区别 :

      • 动态初始化 : 手动指定长度, 系统分配默认值

      • 静态初始化 : 手动指定元素, 系统计算出数组长度

    • 使用选择 :

    静态初始化 : 如果要操作的数据, 需求中已经明确告知了, 直接静态初始化

    动态初始化 : 只明确元素个数, 不明确具体数值的情况

 

数组.lengsh=数组的的长度(一般是在遍历数组中使用,就是需要用到每一个数组的个数时使用,就比如循环是使用)

数组索引:就可以理解为下标或者所索引 ,就像这组数 {1, 2,3 , 4 , 5, 6}

他的索引是从0开始的 0 1 2 3 4 5

  • 索引 (角标, 下标) : 数组容器中, 每一个空间所对应的编号, 编号从 0 开始, 逐个 + 1增长

    04-数组的元素访问

    • 格式 : 数组名[索引];

    • 索引 (角标, 下标) : 数组容器中, 每一个空间所对应的编号, 编号从 0 开始, 逐个 + 1增长

    • 重点理解 : 这种访问格式, 是拿到了真实的数据

    package com.itheima.array1;

    public class ArrayDemo3 {
       /*
           数组的元素访问:

               格式 : 数组名[索引];

               索引(角标, 下标) : 数组容器中空间所对应的编号, 编号从0开始, 逐个+1增长
        */
       public static void main(String[] args) {

           int[] arr = {11, 22, 33, 44, 55};

           // 取出数组中 22 元素并打印
           System.out.println(arr[1]);

           // 判断数组中第一个元素, 是奇数还是偶数
           if (arr[0] % 2 == 0) {
               System.out.println(arr[0] + "是一个偶数");
          } else {
               System.out.println(arr[0] + "是一个奇数");qu
          }

           // 修改数组中第三个元素, 为66
           arr[2] = 66;
           System.out.println(arr[2]);

           // 根据数组中第四个元素, 决定在控制台打印多少次HelloWorld
           for (int i = 1; i <= arr[3]; i++) {
               System.out.println("HelloWorld");
          }

      }
    }

     

09-数组的常见问题

  • ArrayIndexOutOfBoundsException : 数组索引越界异常

    • 原因 : 访问了不存在的索引

  • NullPointerException : 空指针异常

    • 原因 : 当引用数据类型变量, 记录到null之后, 代表跟堆内存的连接被切断了

      这时候还要访问堆内存数据, 就会出现空指针异常

      int[] arr = {11,22,33};
      arr = null;
      System.out.println(arr[0]);

10-二维数组介绍

  • 介绍 : 二维数组也是一种容器, 内部存储的都是一维数组

    • 简单理解 : 容器的嵌套

    • 可以理解为套娃

  • 使用场景 :

    • 发现手里有多个数组, 多个数组属于一个整体, 那就找个更大的容器, 装起来

11-二维数组静态初始化

  • 完整格式

数据类型[][] 数组名 = new 数据类型[][]{{一维数组1},{一维数组2}}
};
int[][] arr = new int[][] {{11,22,33},{44,55,66}}
};
  • 简化格式

数据类型[][] 数组名 = {{一维数组1},}一维数组2}} 
};
int[][] arr = {{11,22,33},{44,55,66}}
};

二维数组存储一维数组的时候, 具体存储的是一维数组的内存地址

  • 二维的数组的元素访问

格式 : 数组名[m索引][n索引];

m索引 : 访问哪一个一维数组
n索引 : 访问一维数组中的哪一个元素

System.out.println(arr[1][2]); // 66

 

二维数组遍历操作

it arr = {{11,22,33},{44,5, 66}};

// 遍历二维数组, 获取每一个一维数组

//外面这一层循环就是二维数组中一维数组的代表的下标或者索引

for(int i = 0; i < arr.length; i++){ // arr[i] : 每一个一维数组 // 继续遍历一维数组, 获取元素

//这个就是代表的再输出二维数组中一维数组内的索引

for(int j = 0; j < arr[i].length; j++){ ​ System.out.println(arri); ​ } }

数组的内存原理

  • 务必打开 ppt 将内部流程梳理清楚

  • 目标 : int[] arr = {11,22,33}; 脑海中就要有堆内存结构

步骤一:使用使用class包的时候,就有main方法,注意(这个时候已经进入方法区)

步骤二:jvm会自动带方法进入栈内存中进行操作,当在栈内存中new了一个数组

步骤三new了一个数组后就会在(堆内存里开辟一个空间,然后这个空间会有一个地址,地址返回到new的数组里,这个时候其实是int arr 中(其实是把这个地址赋值给了arr)arr等于那个地址),然后这个时候你想改数组中索引对应的那个数,就是在栈里再次通过地址到达堆中找到那个数组,然后为所欲为,就可以改索引对应的数字了;自己理解其实大概就是如此!!!!

标签:arr,数组,int,数据类型,索引,二维,一维
来源: https://www.cnblogs.com/xiaolinbx/p/16396689.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有