java的数组

张开发
2026/4/21 13:28:11 15 分钟阅读
java的数组
本节目标1.数组的基本概念1.1为什么要使用数组假设现在要存5个学生的javaSE考试成绩并对其进行输出按照之前掌握的知识点那么我会写出以下代码上述代码没有任何问题,但不好的是如果有20名同学的成绩呢需要创建20个变量吗?仔细观察这些学生的成绩发现所有成绩的类型都是相同的那java中存在可以储存相同变量多个数据的类型吗这就是本节的数组。1.2什么是数组总结1.3数组的创建及初始化1.3.1数组的创建演示补充1array叫做引用变量简称引用因为array存储的是数组第一个元素的地址2数组的具象表现如下图所示3数组有两种语法形式1.3.2数组的初始化数组的初始化主要分为动态初始化以及静态初始化1.动态初始化在创建数组时直接指定数组中元素的个数语法形式注意2.静态初始化在创建数组时不直接指点数据元素个数而直接将具体的数据内容进行指定语法形式提醒注意1不建议使用c中的数组形式int array[],因为int[]是类型array是变量java的形式会更加清晰不会搞混2 数组初始化的错误示范原因[]和{}两个括号中不能同时有元素在解析动态和静态初始化可以分为两步但是省略式不可以分布3如果没有对数组进行初始化数组中元素有默认值1.4数组的使用1.4.1数组中元素访问数组在内存中是一段连续的空间空间编号都是从0开始的依次递增该编号称为数组的下标数组可以通过下标访问其任意位置的元素。演示注意演示异常这个报错是数组越界异常双引号后面的Index 15 out of bounds for length 6 是告诉你错误的原因1.4.2遍历数组所谓“遍历”是指将数组中的所有元素都访问一遍访问是指对数组中的元素进行某种操作比如打印演示遍历数组的打印法一for循环注意在数组中可以通过数组对象.length来获取数组的长度法二for each循环演示语法形式冒号左边是数据类型右边是数组名称辨析fori循环和foreach循环的区别——foreach循环无法获取到对应的下标法三用工具遍历数组用操作数组类的工具Arrays中的toString方法演示详细过程tips如果只是单独想查看数组里的元素用Arrays的方法会比较便捷2.数组是引用类型2.1初始JVM的内存分布内存是一段连续的存储空间主要用来存储程序运行时数据的。问题1.为什么要划分内存如上图所示为了使其更加的规则有序所以我们给内存划分了不同的区域2.划分成了哪些内存各部分的详细内容补充为什么会有两个栈它们之间有什么区别2.2基本类型变量于引用类型变量的区别举例如上图所示为了更加清楚的了解栈和堆之间的关系我们接下来用图来理解补充局部变量都会在栈上开辟内存而对象会在堆里开辟内存从上图可以看到引用变量并不直接存储对象本身可以简单理解成存储的是对象在堆中空间的起始地址。通过该地址引用变量便可以去操作对象。有点类似c语言中的指针但是java中的引用要比指针的操作更简单2.3再谈引用变量演示代码画图分析接下来我们将会对每一行代码逐句解读第一行代码执行后因为只是对数组进行定义里面的值都是默认值之后的二到四行代码执行后第五行代码之后的第六行代码第七行代码重点此时我们会说array1这个引用指向了array2这个引用所指的对象但我们发现一个问题之前array1指向的对象去哪里了结果————如果这个对象一直没有人引用他此时就会被JVM自动回收第七到九行代码如果两个引用同时指向一个对象的时候操作任意一个引用都可以修改这个对象的值2.4认识null演示此时我们不会说是array2执行null而是会说array2这个引用不指向任何对象常见案例空指针异常结果原因我们使用了null.xxx,例如在本示例中的array2就是等于null的所以array2.length就是null.xxx的形式总结解决办法如果将来代码报错空指针异常那么我们要做的是找到这行代码中的引用判断这个引用为什么是空的演示同理可得这种情况也会有空指针异常总结3.数组的应用场景3.1保存数据演示3.2作为函数的参数3.2.1参数传基本数据类型发现在func方法中修改x的值不影响实参的num值2.参数传数组类型引用数据类型需求把数组当中的每个数据扩大两倍参考、接下来用画图来理解代码传参前传参后当返回ret的时候注意当函数结束的时候局部变量的值会被回收所以综上所述演示的是引用的赋值数组变式在原来数组上扩大两倍用画图理解进入函数前进入函数后函数结束后通过上面两个代码我们可以发现传引用可以改变实参的值也可以不改变形参的值为了方便理解传引用我们再举两个简单一些的例子演示类型一:类型二画图理解传参前传参后总结一个引用不可能同时指向多个对象3.3作为函数返回值参考小结1.int[] array null 代表这个引用不指向任何对象2.array 1 array 2 代表array1这个引用指向来了array2这个引用所指向的对象3.一个引用不可能同时指向2个对象4.数组练习4.1数组转换字符串尝试写一个自己的方法参考:在java中提供了java.util.Arrays包其中包含了一些数组常用方法这样我们可以直接使用转换的方法而不用每次都自己书写演示4.2数组拷贝4.3求数组中元素的平均值要求给定一个整型数组求平均值

更多文章