数组的基础理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组的基础理解相关的知识,希望对你有一定的参考价值。

数组:

1.概念,什么数数组?
数组是存储多个变量(元素)的东西(容器);
这多个变量的数据类型要一致;

2.java的内存分配图

java为了提供程序的执行效率,将内存分为五个部分

A.栈内存:可以存储局部变量
在方法定义中(定义的局部变量)或者在方法声明上(形参)都是局部变量
当方法或者代码执行完后,局部变量就会及时从内存中释放掉;`
B.堆内存:
new出来的东西在堆内存,堆内存中创建的数组对象会在使用后,由垃圾回收期释放,但不是用完立即释放,而是等垃圾回收器空闲才进行释放
C.方法区
面向对象部分讲
D本地方法区(和系统有关系)
E寄存器(和CPU有关)

3.数组的定义:
数据类型[] 数组名;
数据类型 数组名[];
例如:
int [] a; 定义了一个int类型的数组变量a;
int a [];定义了一个int类型 变量a的数组;
这两个方式定义:虽然写法不同,读法不同但是表达的效果是一样的,都是在定义一个数组;
面试过程中如果没有说明二维数组,都用如上的一维数组去做;
4.数组的初始化
1)动态初始化:给数组指定长度,数组中的元素值由系统默认给定;
2)静态初始化:给定数组中元素的值,数组的长度有系统给定;

   动态初始化:
       数据类型[]数组名  =  new  数据类型[数组长度]
        例如:
                     int [] arr = new  int[3];
       没有被初始化的数组是没办法被使用的,不能直接输出一个arr,必须有new那些东西;
                此时打印输出arr就是一个地址值,
       获取数组中的元素:通过数组名称获取
               格式:
                           数组名称[索引值],数组的索引值从零开始,最大的索引是数组长度-1;
                           输出arr[0]     arr[1]   结果都是自动给定的0;

        静态初始化:
              原始格式:   数据类型[] 数组名称 = new 数据类型[]{元素1.2.3....}
              简写方式:   数据类型[]数组名称  =   {元素1.2.3.........}       

                举例:  int []  arr  =  new  int[]{1,2,3}
                          int []  arr   =  {1,2,3}
                如果定义是这样定义:
                          int[] arr  =  new int[3]{1,2,3}
               这样便是错误的,因为这样是动静结合,不可使用;
  1. Throwable类是java语言中所有错误或者异常的超类;
    而Throwable的已知子类便是;
    Error:错误(严重错误);
    Exception:异常 分为编译时期,运行时期;
    数组中出现的两个异常:java.lang.ArrayIndexOutOfBoundsException: 数组角标越界
    出现的原因是访问了数组中不存在的索引值;
    解决方案:观察数组中索引值到多少;

                               如果int [] arr =null; 输出arr[0];
                               此时输出异常:NullPointerException:空指针异常;(实际开发异常最多的)
    出现原因是对象为空,而开发者还要去使用对象,那么就会出现问题;
    解决方案:判断一下if(arr!=null){再输出对象},这样即可解决;
    
    OOM异常:OutOfMemory:内存溢出;
                                使用app时,比如这个app携带大量的图片,一直再往下刷新,有时app退出,
                                你下拉的速度远不及加载的速度,加载要求释放掉,你下拉太慢,
                                已经释放掉了,娇内存溢出;
                               解决方案: 使用第三方的软件,比如ImageLoader等;

6.数组中的length;
数组中的length属性,arr.length;可以在静态初始化后直接算出里面的元素量;
同理 arr.length-1;可以算出索引的大小;
区分:
还有一个length()方法,是字符串中运用的,用来计算字符串的长度;

以上是关于数组的基础理解的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法

将数组转换为 IEnumerable<T>

金蝶handler中 collection 代码片段理解

数组的基础理解

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段