数组高级
多维数组:
数组语法:
一维数组:数组中的每一个元素都是一个值.
二维数组:数组中的每一个元素都是一个数组.
三维数组:数组中的每一个元素都是一个二维数组.
---------------------------------------------------------
严格上说JAVA上不存在多维数组的概念.和C做区分.一般称之为数组中的数组.
二维数组的初始化问题:
二维数组初始化:int a[2][3]={{1,2,3},{4,5,6}};
int [] [] arr = new[] []{
arr1, arr2, arr3
}
int [] [] arr = new int[][] {
{1, 2, 3},
{4, 5},
{6}
}
二维数组的遍历:
JAVA5对数组的新支持: 增强FOR循环(foreach):
其实, 我们在操作数组的时候不关心迭代变量(数组的索引),关心的是数组的元素,有没有一种方法让我们直接操作数组元素不去操作数组的索引.
从JDK1.5开始,Java提供了一种新的语法(增强for循环.foreach)
语法:
for(数组元素类型 变量: 数组名)
{
循环体
}
通过反编译我们可以发现.增强for循环在底层依然是用for循环+索引来实现的,我们把增强for循环成为编译器的新特性.我们可以称之为语法糖.可以让开发者写更少的代码提高效率.
ele相等于l也就是固定的某个数据.ail[k] 不会改变数组的数据.
for循环功能比foreach更彪悍.
--------------------------------
如果迭代数组元素而不关心数组的索引的时候使用foreach.
foreach在后面还会用到集合框架.
==========================================================================================================
方法的可变参数:
将数组作为参数输入.用增强for循环计算.
但是这种做法的弊端有很多:为了求多个数的和, 需要新建一个数组来储存数据.
如果要改变数组的数量不能修改,数组的长度是一定的.
解决的方法, 可以利用方法的可变参数:
double ...
和for循环一样.语法糖.
可变参数的底层其实就是数组.
把double ... arr当做一个数组传入. 长度由length来不断更新.
可变参数必须作为方法的最后一个参数.如果不是的话会产生歧义.因为可变参数的个数不是确定的.所以放在最后一个.例如 Static double getSum(double x, double ... ) 数据类型相同,可变参数把数据当做数组来处理,那么第一个数是double,剩下的都是可变参
=======================================================================================================================================================
数组的一些算法:
数组元素的拷贝操作:
这段代码不够健壮/只能输入int类型的数组.
System类中的arraycopy方法:
定义一个数组元素的拷贝方法拷贝任意数组元素拷贝操作(反射):
因为该方法是静态的,用方法所在类的类名来调用. System.arraycopy(Object src;int scrPos;Object dest;int destPos;int length)(调用的对象数组;调用开始的位置;调用的目标数组;目标数组的第几个开始粘贴;调用的长度/粘贴长度)
<< : 左移运算符,num << 1,相当于num乘以2
>> : 右移运算符,num >> 1,相当于num除以2
>>> : 无符号右移,忽略符号位,空位都以0补齐
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!