数组高级

 

 

多维数组:

数组语法:

一维数组:数组中的每一个元素都是一个值.

二维数组:数组中的每一个元素都是一个数组.

三维数组:数组中的每一个元素都是一个二维数组.

---------------------------------------------------------

严格上说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补齐

 

posted @   NobodyHero  阅读(323)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示