1.Arrays.toString(数组名)
public static void main(String[] args) {
int [] a=new int[] {18,62,68,82,65,9};
int [] b=new int[3];//分配了长度是3的空间,但是没有赋值
//方法一 通过for循环
for(int i=0;i<b.length;i++) {
b[i]=a[i]; //把数组a的前三位赋值给数组b
// System.out.println(b[i]);
}
// for(int i=0;i<b.length;i++) {
// System.out.println(b[i]);
// }
System.out.println(Arrays.toString(b));
}
}
直接以整体输出数组 这里定义b数组长度为3 数值没有 把数组a的前三个赋值给了数组b
输出结果:[18,62,68]
注意:(a.length代表二维数组的行数 a[i].legth代表二维数组的第i行的长度)
2. System.arraycopy(src,srcPos,dest,destPos,length)
解释://src: 源数组
//srcPos: 从源数组复制数据的启始位置
//dest: 目标数组
//destPos: 复制到目标数组的启始位置
//length: 复制的长度
import java.util.Arrays;
public static void main(String[] args) {
int [] a=new int[] {18,62,68,82,65,9};
int [] b=new int[3];
System.arraycopy(a, 0, b, 0, 3);
//打印出来
System.out.println(Arrays.toString(b));
}
}
和第一个一样的第二种方法 直接赋值给数组b 无需再通过for循环
3.随机数Math.random();
Math.random()代表0-1之间的随机数 是浮点类型 如果用它赋值为int型 则需要强制转换 即int a[i]=(int)(Math.random());
取0-100的随机整数:(int)(Math.random()*100);
取5-10的随机整数:(int)(Math.random()*6+5); 乘以前面数加1加上后面数和前面数的差值
4. 数组复制 Arrays.copyOfRange(int[] original, int from, int to)
与使用System.arraycopy进行数组复制类似的, Arrays提供了一个copyOfRange方法进行数组复制。
不同的是System.arraycopy,需要事先准备好目标数组,并分配长度。 copyOfRange 只需要源数组就就可以了,通过返回值,就能够得到目标数组了。
除此之外,需要注意的是 copyOfRange 的第3个参数,表示源数组的结束位置,是取不到的。
一开始输入Arrays然后按Alt+/键 原本以为它会自动生成Arrays.copyOfRange(int[] original, int from, int to);方法
结果一直有编译错误,Arrays和copyOfRange底下都有红色下划线 我按Ctrl+1他说需要定义一个copyOfRange()的静态方法
然后我也快捷键定义了一个,然后再点main方法中的copyOfRange()此时还有红线报错 然后惊喜的发现显示copyOfRange() 后 面提示方法中的参数定义成什么样子的 比如第一个参数是定义整形数组还是浮点型数组;选好以后写进参数;再在Arrays底下的波浪线导入import.java.until.Arrays;的包,然后运行成功。
当我第二次再试一次的时候,结果输入完int [] b=Arrays. 后直接有了Arrays.copyOfRange();的方法
// 第一个参数表示源数组
// 第二个参数表示开始位置(取得到)
// 第三个参数表示结束位置(取不到)
package part5;
import java.util.Arrays;
/**
* <p>Title: Arrays</p>
* <p>Description: </p>
* @author Mr.chen
* @date 2018年8月24日
*/
public class Arrayse {
private static int[] copyOfRange() {
// TODO Auto-generated method stub
return null;
}
public static void main(String[] args) {
int[] a = new int[] { 18, 62, 68, 82, 65, 9 };
int[] b = Arrays.copyOfRange(a, 0, 3);
for (int i = 0; i < b.length; i++) {
System.out.println(b[i]+" ");
}
}
}

5.排序 Arrays.sort()
在前面章节学习了 选择法排序 和 冒泡法排序,Arrays工具类提供了一个sort方法,只需要一行代码即可完成排序功能


6.搜索 Arrays.binarySearch(数组名,数组元素值)
定位数组中数值出现在数组的位置Arrays.binarySearch(数组名,数组元素值)
注意:使用binarySearch进行查找之前,必须使用sort进行排序,如果数组中有多个相同的元素,查找结果是不确定的
package part5;
import java.util.Arrays;
/**
* <p>Title: Arraysbinaryseach</p>
* <p>Description: </p>
* @author Mr.chen
* @date 2018年8月26日
*/
public class Arraysbinaryseach {
public static void main(String[] args) {
int [] a = new int [] {18, 62, 68, 82, 65, 9};
Arrays.sort(a);
System.out.println("排序后"+Arrays.toString(a));
System.out.println("68在数组a的第"+Arrays.binarySearch(a, 68)+"位置");
}
}
如果数组中有多个相同的元素,查找结果是不确定的

7.填充 Arrays.fill(数组名,数值);
package part5;
import java.util.Arrays;
/**
* <p>Title: Arrayfill</p>
* <p>Description: Arrays.fill(数组名,填重值) 方法填充数组 </p>
* @author Mr.chen
* @date 2018年8月26日
*/
public class Arrayfill {
public static void main(String[] args) {
int [] a = new int [10]; //定义一个长度为10 的空数组
Arrays.fill(a, 5); //向数组a中填重 数值为5的元素
System.out.println("填充后"+Arrays.toString(a));
}
}
结果:

8. 将一个5x8的二维数组,用随机数填满,借助Arrays的方法对二维数组进行排序
参考思路:将一个二维数组复制给一个事先声明长度的一维数组中
然后对这个一维数组用Arrays.sort(b);进行自增排序
然后再将排好序的一维数组通过for循环(二维数组行的for循环)复制回二维数组
package part5;
import java.util.Arrays;
/**
* <p>Title: shuzulianxi</p>
* <p>Description: Array 部分练习
* 首先定义一个5X8的二维数组,然后使用随机数填充满。
* 借助Arrays的方法对二维数组进行排序。
* </p>
* 参考思路:先把二维数组使用System.arraycopy进行数组复制到一个一维数组
* 然后使用sort进行排序
* 最后再复制回到二维数组。
*
* @author Mr.chen
* @date 2018年8月26日
*/
public class shuzulianxi {
public static void main(String[] args) {
int[][] a=new int[5][8]; //定义了一个5x8二维的数组
int [] b=new int[40]; //事先声明一个长度为40的一维数组 以供将二维数组的数据复制到一维数组
for (int i = 0; i < 5; i++) { //a.length 代表二维数组多少行
for (int j = 0; j < a[i].length; j++) { //a[i].length代表 第i行的长度
a[i][j]=(int)(Math.random()*100); //通过双重for循环进行0-100随机数的填重
System.out.print(a[i][j]+" "); //打印二维数组的随机数
}
System.out.println(Arrays.toString(a[i])); //打印出第i行的一维数组 (怪不得二维数组称一维数组的一维数组)
System.arraycopy(a[i], 0, b, i*8, 8); //用System.arraycopy将前5行的一维数组的所有数据复制到事先声明的一维数组b中
}
System.out.println(Arrays.toString(b)); //所以二维数组转化为一维数组b
Arrays.sort(b); //对一维数组b进行排序从小到大即 Arrays.sort()排序
System.out.println(Arrays.toString(b)); //输出对一维数组排序后的结果
for (int i = 0; i < 5; i++) { //通过对前5行for循环
System.arraycopy(b, i*8, a[i], 0, 8); //将排序好的一维数组b在转化回二维数组
System.out.println(Arrays.toString(a[i])); //从数组b的起始位置i*8 复制到数组a[i]起始位置为0的地方 长度为8
}
}
}
输出结果:

本文介绍了Java中数组的多种操作方法,包括使用Arrays.toString输出数组、System.arraycopy复制数组、Math.random生成随机数、Arrays.copyOfRange复制数组、Arrays.sort排序、Arrays.binarySearch搜索、Arrays.fill填充,还给出了用随机数填充二维数组并排序的思路。

452

被折叠的 条评论
为什么被折叠?



