Java中一维数组的详细介绍

简介: Java中一维数组的详细介绍

一、一维数组介绍

 ​ ​  ​  ​  ​  ​ 什么是数组?

​  ​  ​  ​  ​  ​  ​  ​  ​ 数组指的是一种容器,可以用来存储同种数据类型的多个值

​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​ 总结:数组容器在存储数据的时候需要结合数据类型考虑。

 ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​ 例如:int类型的数组容器(boolean byte short double)

​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​  ​ 建议:容器的类型,和存槠的数据类型保持一致


二、数组元素

1.数组元素访问

 ​ ​ ​ ​ ​ ​ ​ ​ ​ ​数组元素访问:

  * 格式:数组名 [ 索引 ];      //arr [8]

  * 索引:索引是数组容器中空间的编号,编号从0幵始,逐个+1增长  

注意:当访问了数组中不存在的索引,就会引发索引越界异常


2.数组元素修改

 ​ ​ ​  ​ ​数组元素修改:

  * 格式:数组名 [ 索引 ]=修改元素;        // arr [0]=5

3.数组元素遍历

 ​ ​ ​ ​ ​ 数组遍历:

  *格式:数组名.length        //获取元素个数,元素长度
    
  *范例:arr.length          //arr.length-1是索引长度

注意:

  ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​       **1、遍历指的是取出数据的过程,不要局限的理解为, 遍历就是打印!**

 ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 2、i:索引

 ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 3、arr[i] :元素


三、数组定义格式

 ​ ​ ​ ​ ​ 数组定义格式:

  * 格式1:数组类型 [] 数组名
  * 范例:  int[] array

  * 格式2: 数据类型  数组名 []
  * 范例:  int array []

 ​ ​ ​ ​ 扩展:打印数组名会出现一个地址值,该值的含义有如下

打印数组名各值的意思:

            [I@10f87f48  :  数组的内存地址

              @: 分隔符
              [: 当前内存空间是一个数组类型
              I: 当前空间中存储的数据是int类型
              10f87f48  : 十六进制地址值

在这里插入图片描述


       如果是打印字符数组的话,不会看到地址值,而是具体的内容
       
   原因:println()源码中会自动对字符数组进行遍历操作

在这里插入图片描述


四、数组静态初始化

1. 数组静态初始化含义

 ​ ​ ​ ​ ​ ​ ​ ​ ​ 静态初始化含义:

              指定元素,长度自动分配

2. 数组静态初始化格式

 ​ ​ ​ ​ ​ ​ ​ ​ ​ 静态初始化格式:

   *格式1:数据类型[] 数组名 = new 数据类型[] {元素1,元素2,..};
   *范例: int [] arr=new int[] {11,22,33};    //[]这里的里面不能加数字


   *格式2:数据类型[] 数组名 = {元素1,元素2...};   //推荐使用
   *范例:  int [] arr={11,22,33};
        

 注意:   
        double [] arr={12,20,5.2};    
      //这样子是可以的,单个整数或者带小数也一样可以

五、数组动态初始化

1. 数组动态初始化含义

 ​ ​ ​ ​ ​ ​ ​ ​ ​ 动态初始化含义:

        初始化时只指定数组长度,由系统为数组分配初始值

2. 数组动态初始化格式

 ​ ​ ​ ​ ​ ​ ​ ​ ​ 动态初始化格式:

  
    * 格式: 数据类型 [] 数组名 =new 数据类型[数组长度];
                           
    * 范例:int [] arr=new int [3];  //【3】其实就是数组的元素个数



 注意:
 
    1.允许数组间进行赋值,赋值的是自己所记录的地址值

    2.当两个数组通过地址指向同一块内存空间的时候,只要有一个对空间的数据发生了修改,那么另外一个去查找的时候,找到的就是改变之后的那份数据

3. 数组动态初始化的默认值

在这里插入图片描述

                                              **例子:**

在这里插入图片描述
在这里插入图片描述


六、数组动态和静态初始化两种对比

1.静态初始化

 ​ ​ ​ ​ ​ ​ ​ ​ ​ 静态初始化:手动"指定数组元素",系统会根据元素个数,计算出数组的长度

   使用场景:需求中已经明确了要操作的具体数据,直接静态初始化即可

       例:将一班的学生的成绩存入数组中:11 , 22,33
                                               
            int [] arr={11,22,33};

1.动态初始化

 ​ ​ ​ ​ ​ ​ ​ ​ ​ 动态初始化:手动"指定数组长度",由系统给出默认初始化值

  使用场景:只明确元素个数,不明确具体数值,推荐使用动态初始化
                       
     例:使用数组容器来存储键盘录入的5个整数
                 
               int [] arr=new int[5];
               arr[0]=1;
               arr[1]=2;
               arr[2]=3;
               arr[3]=4;
               arr[4]=5;

七、空指针异常

 ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 空指针异常:当引用数据类型变量被赋值为null之后,地址的指向被切断,还继续访问堆内存数据,就会引发空指针异常

  如:   int[] arr1 = null;
        System.out.println(arr1[0]);

在这里插入图片描述


八、数组索引越界异常

           当访问到了不存在的索引时,就会出现索引越界异常

在这里插入图片描述


九、数组内存图

1.数组内存分配

方法区:
          1.类的字节码文件加载时进入方法区
          
          2.jvm自动调用main方法(方法),进入栈内存执行       
             
                                //是jvm调用方法,不是栈调用的
          
栈内存: 方法运行进入的内存

堆内存:new出来的内容都会进入堆内存,开辟空间,产生地址值

在这里插入图片描述


2.两个数组指向相同内存的图

在这里插入图片描述


总结

          以上就是今天要讲的内容,本文介绍了一维数组的使用,以及相关的访问遍历,还有内存图相关的介绍。


作者:KJ.JK

本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习

目录
相关文章
|
5天前
|
存储 前端开发 JavaScript
【前端学java】一篇文章带你精通java 中的数组(10)
【8月更文挑战第10天】一篇文章带你精通java 中的数组
9 3
【前端学java】一篇文章带你精通java 中的数组(10)
|
5天前
|
Java 索引
java中的栈(利用数组实现栈)
这篇文章通过Java代码示例介绍了如何使用数组实现栈操作,包括栈的初始化、入栈、出栈、判断栈满和空以及遍历栈的方法。
java中的栈(利用数组实现栈)
|
11天前
|
Java
Java 基础语法-面试题(54-63道)(数组+类+包)
Java 基础语法-面试题(54-63道)(数组+类+包)
29 16
|
11天前
|
Java
Java数组几道练习题
Java数组几道练习题
27 11
|
11天前
|
Java 容器
07 Java数组与数组操作(定义+遍历+排序+增删改查)(上)
07 Java数组与数组操作(定义+遍历+排序+增删改查)
28 8
|
11天前
|
Java
Java数组的2个小案例(杨辉三角分析和商品管理增删改查)
Java数组的2个小案例(杨辉三角分析和商品管理增删改查)
35 4
|
11天前
|
存储 Java API
07 Java数组与数组操作(定义+遍历+排序+增删改查)(下)
07 Java数组与数组操作(定义+遍历+排序+增删改查)
26 4
|
17天前
|
存储 算法 Java
Java零基础(1) - 从零开始学习数组
【8月更文挑战第1天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
24 1
|
5天前
|
Java
Java中 字符串,字符串数组,整型数组初始化
Java中 字符串,字符串数组,整型数组初始化
6 0
|
10天前
|
算法 Java 索引
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
20 0