2022.6.1 数组

数组含义:
 *          存储同一中数据类型多个元素的固定容器
 *      特点:
 *          1.数组一旦初始化其长度(大小)是不可以改变的
 *          2.在内存中存储的数据必须是同一种数据类型
 *          3.数组中的元素必须是多个,可以声明长度为0或1的数组,但是这样的数组没有任何意义
 *
 * 数组的声明
 *      含义:
 *          就是将数组进行定义
 *      分类:
 *          数据类型[] 数组名;(推荐)
 *              通过字面描述:int[] arr
 *                  声明存储int类型元素的数组,数组名为arr
 *          数据类型 数组名[];
 *              通过字面描述:int arr[]
 *                  声明存储int类型元素的变量,变量名为arr数组
 *      解释:
 *          数据类型:数组中元素的数据类型
 *          []:数组
 *          数据类型[]:数组的数据类型
 *
 * 数组的初始化:
 *      含义:
 *          将数组在内存中进行创建
 *      分类:
 *          动态初始化:声明数组时只初始化数组的长度,不初始化数组中具体的存储元素,JVM可以直接获取到数组的长度
 *
 *          静态初始化:声明数组时不进行数组长度的初始化,只初始化数组中具体的元素,JVM可以间接获取到数组的长度
 *      格式:
 *          动态初始化:
 *              数据类型[] 数组名 = new 数据类型[数组长度];
 *          静态初始化:
 *              标准版(完整版):
 *                  数据类型[] 数组名 = new 数据类型[]{元素1,元素2,......,元素n};
 *              简化版
 *                  数据类型[] 数组名 = {元素1,元素2,......,元素n};
 *                  注意:
 *                      通过数组静态初始化的简化版创建数组时,JVM会根据数组的数据类型在内存中申请并创建数组,new 数据类型[]由JVM在
 *                      创建数组时隐式填充
 *      解释:
 *          new:申请并开辟内存空间

数组声明初始化的注意事项:
 *      1.数组中的元素支持变量的类型转换,保证内存中是同一种数据类型即可
 *      2.数组不可以通过动静结合的方式进行初始化
 *      3.数组一旦初始化,其长度不可以改变
 *      4.静态初始化的简化版不可以先声明后初始化
 *          原因:静态初始化简化版直接声明初始化时,是根据数组名前面的数据类型[]在内存中申请并开辟内存空间,new 数据类型[]由JVM隐式
 *          进行提供;静态初始化简化版如果先声明后初始化,在初始化过程中无法直接获取数组名前面的数据类型[],JVM不会隐式提供new 数据类型[]
 *

获取和使用数组中元素
 *
 * 索引值:
 *      含义:
 *          JVM针对数组中元素的动态编号
 *      特点:
 *          1.索引值从0开始,依次递增,数组中最大的地址值是其长度-1
 *          2.长度为0的数组没有索引值
 *      格式:
 *          数组名[索引值]
 *      注意:
 *          获取数组中元素的时,不能访问不存在的索引或错误索引,否则会发生索引越界异常(ArrayIndexOutOfBoundsException)
 *

JVM中的内存划分
 *      JDK6.0(包含)以前
 *          寄存器(程序计数器):存储和计算机硬件(CPU)相关的内容
 *          本地栈内存:存储和操作系统相关的内容
 *          本地方法栈:俗称"栈内存",正在运行的方法
 *          堆内存:存储隐式和显式new出来的东西
 *          方法区:存储字节码文件对象(类文件Class)
 *      JDK7.0
 *          寄存器(程序计数器):存储和计算机硬件(CPU)相关的内容
 *          本地栈内存:存储和操作系统相关的内容
 *          本地方法栈:俗称"栈内存",正在运行的方法
 *          堆内存:存储隐式和显式new出来的东西
 *              将方法区划归堆内存中
 *      JDK8.0(包含)以后
 *          寄存器(程序计数器):存储和计算机硬件(CPU)相关的内容
 *          本地栈内存:存储和操作系统相关的内容
 *          本地方法栈:俗称"栈内存",正在运行的方法
 *          堆内存:存储隐式和显式new出来的东西
 *          元空间:存储特殊值的空间
 *
 * 栈内存(本地方法栈)的特点
 *      含义:
 *          JVM中存储"正在运行方法"的内存
 *      特点:
 *          1.方法中的内容会随着方法的进栈而进栈,会随着方法出栈的消失
 *          2.方法的出栈是指在栈内存中立刻消失
 *          3.方法进栈和出栈遵循"先进后出,后进先出"原则
 *
 * 方法区的特点:
 *      含义:
 *          所应用到的字节码文件对象
 *      包含:
 *          静态区和常量区
 *      特点:
 *          方法区内部已有的数据,在二次获取时不会创建新的内容,会拿已有数据进行使用
 *
 * 堆内存的特点:
 *      含义:
 *          存储显式或隐式new出来的内容
 *      特点:
 *          1.堆内存中的每块区域都有独立的地址值
 *          2.堆内存中每块区域中的数据都有默认值
 *              整数型         0
 *              浮点型         0.0
 *              字符型         空白字符 '\u0000'
 *              布尔型         false
 *              引用型         null
 *          3.在堆内存中有一个特殊的对象,该区域存储的是"垃圾回收器"
 *              作用:
 *                  垃圾回收器类似于生活中的"扫地机器人",有规则的扫描堆内存,遇到垃圾数据进行回收
 *          4.堆内存中每块区域在内存中消失的特点
 *              该区域和其它内存区域没有任何的关联性时,该区域会被JVM标记为"垃圾数据",等待垃圾回收器的回收,垃圾回收器扫描到该
 *              区域时进行回收
 *

数组的应用:
 *      基本应用:不会针对数组中元素的索引位置进行任何改动的应用
 *          举例:求和,求最值,......
 *      高级应用:针对数组中元素的索引位置进行改变
 *          举例:反转,排序
 *      综合应用:和之前讲解的方法进行综合使用
 *          举例:数组的动态扩容,动态删除,动态插入
 *
 * 需求:
 *      按照固定的格式拼接数组的元素
 *      举例:
 *          固定格式:
 *              数组:[元素1, 元素2, ......, 元素n]
 *

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值