数组高级
Posted Dva清流
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组高级相关的知识,希望对你有一定的参考价值。
多维数组:
数组语法:
一维数组:数组中的每一个元素都是一个值.
二维数组:数组中的每一个元素都是一个数组.
三维数组:数组中的每一个元素都是一个二维数组.
---------------------------------------------------------
严格上说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补齐
以上是关于数组高级的主要内容,如果未能解决你的问题,请参考以下文章