曦曦xixi
Java后端
·04-23 01:23
Day 3 ✅ 今天做了:继续复习 1.数组的定义 什么是数组:是存储 “同一类型数据” 的容器 数组四大核心特点: 储存的元素类型一致、初始化后数组固定不变、元素在内存中的储存是连续的且可以通过索引访问、数组属于引用数据类型 ———————————————————————————— 2.数组的基本使用:声明+初始化、数组的访问与遍历、数组的工具类 ①声明+初始化:即先分配内存空间再赋值 数组声明:数据类型[ ] 数组名; 初始化:静态初始化,提前知道该数组所存储的所有元素,元素长度由元素个数决定: 数据类型[ ] 数组名 = new 数据类型[ ]{元素1, 元素2, ...}; 动态初始化:不清楚具体元素,但规定了数组的长度: 数据类型[ ] 数组名 = new 数据类型[长度]; ②数组的访问和遍历: 访问数组,通过数组索引访问,数组的索引从0 开始,最大索引是数组长度-1:数组名[索引]; 数组的遍历,即对数组的所有元素逐一访问,普遍使用两种方式: for循环(索引自增+1访问)→public class ArrayForLoop { public static void main(String[] args) { int[] scores = {90, 85, 95, 80, 100}; int sum = 0; // 普通for循环:i是索引,从0到length-1 for (int i = 0; i < scores.length; i++) { sum += scores[i]; // 累加每个元素 System.out.println("第" + (i+1) + "个学生成绩:" + scores[i]); } System.out.println("成绩总和:" + sum); // 输出450 } } for-each循环(只能获取元素,但不需要索引)→ for (数据类型 变量名 : 数组名) { // 变量名代表当前遍历到的元素 } 数组的声明初始化和访问遍历需要注意几点: 索引越界,即使用超过数组长度-1的索引访问数组 空指针异常,数组变量未能指向有效数组 声明和初始化格式建议使用最规范的那种,简化写法容易混淆出错 数组一旦初始化就要确定长度,无论是静态还是动态初始化,初始化后无法进行动态增删 ———————————————————————————————————————— 3.数组的内存分析 以int[ ] scores = new int[ ]{90,85,95}为例 分位两部分来看,第一个部分是int[ ] scores ,其中int声明为数组储存的元素类型,这里指的是整型数组 scores指的是数组变量。数组变量存储着该数组的首地址,因为数组元素地址连续的特性,后续数组其他元素的访问都是用过首地址+索引来完成的。故解释了,为什么int[ ] scores数组不是基本数据类型而是引用数据类型,因为数组变量本身就是只存放了一个数组的内存首地址罢了。此时使用的是栈内存。 第二部分new int[ ]{90,85,95},实例化通知jvm分配三个连续的、能存放int数据的内存空间(堆内存),并且把90,85,95塞进对应的内存空间。 最后 = ,完成赋值,即数组变量获取到该数组首地址:scores → 0x123 → [90, 85, 95](地址0x123) 📚 今日感悟:数组定义、数组的基本使用、数组的内存分析
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP