JAVA-SE基础篇-Arrays
/**
* Arrays
* 知识点
* 1.
* copyOfRange(int[] original,int from,int to);
// int[] original 第一个参数表示原数组;
// int from 第二个参数表示开始位置(取得到);
// int to 第三个参数表示结束位置(取不到);
重点:int b[]=Arrays.copyOfRange(a, 0, 3);
System.out.println(Arrays.toString(b));
* 2.
* //第二种显示数组方法 Arrays.toString(数组名);
* System.out.println(Arrays.toString(a));
*
* 3. //从小到大排序 Arrays.sort(数组名);
Arrays.sort(a);
*
* 4. int a[]=new int[] {10,34,56,23,98};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//使用binarySearch之前,必须先使用sort进行排序;否则无法给出正确的位置!!!!!!
System.out.println("数字23出现的位置:"+Arrays.binarySearch(a, 23));
*
* 5. //比较两个数组的内容是否相同
//第二个数组最后一个元素是 8 ,,和第一个数组不一样,所以结果返回是 Flase
int a[]=new int[] {23,24,45,76,7};
int b[]=new int[] {23,24,45,76,8};
System.out.println(Arrays.equals(a, b)); //输出的结果是true和Flase
*
* 6. //使用同一个值,填充整个数组
int a[]=new int[5];
Arrays.fill(a, 5);
System.out.println(Arrays.toString(a));
*
* 7. //复制二维数组里面的内容到一维数组,再返回去!!!
* System.arraycopy(b, i*a[i].length, a[i], 0, a[i].length);
*
* @author Administrator
*
*/
public class TestArrays {
public static void main(String[] args) {
test01();
System.out.println("###################");
test02();
System.out.println("###################");
test03();
System.out.println("###################");
test04();
System.out.println("###################");
test05();
System.out.println("###################");
test06();
System.out.println("###################");
test07();
System.out.println("###################");
test08();
}
//数组复制 int b[]=Arrays.copyOfRange(int [], int from,int to);
// system.arraycopy(int [a], 起始位置 , int [b] , 复制长度 );
public static void test01() {
int a[]=new int[5];
for (int i = 0; i < a.length; i++) {
a[i]=(int)(Math.random()*100);
}
System.out.println(Arrays.toString(a));
System.out.println("第一种复制数组方法:");
// copyOfRange(int[] original,int from,int to);
// int[] original 第一个参数表示原数组;
// int from 第二个参数表示开始位置(取得到);
// int to 第三个参数表示结束位置(取不到);
int b[]=Arrays.copyOfRange(a, 0, 3);
System.out.println(Arrays.toString(b));
System.out.println("第二种复制数组方法:");
// System.arraycopy(src, srcPos, dest, destPos, length);
// System.arraycopy(a, 0, b, 0, 5);
// 把数组a 从0开始复制到数组b的起始位置0, 复制数组a的5个元素
//
// src:原数组
// srcPos:从原数组复制数据的起始位置
// dest:目标数组
// destPos:复制到目标数组的起始位置
// length:复制长度
int c[]=new int[4];
System.arraycopy(a, 0, c, 0, 4);
System.out.println(Arrays.toString(c));
}
//转换为字符串 Arrays.toString(数组名);
public static void test02() {
int a[]=new int[5];
for (int i = 0; i < a.length; i++) {
a[i]=(int)(Math.random()*100);
}
//第一种显示数组方法 for循环
System.out.println("增强for循环:");
for (int i : a) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("一般for循环:");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
//第二种显示数组方法 Arrays.toString(数组名);
System.out.println("Arrays.toString(数组名):");
//第一种书写方式
String content=Arrays.toString(a);
System.out.println(content);
//第二种书写方式
System.out.println(Arrays.toString(a));
}
//排序
public static void test03() {
int a[]=new int[5];
for (int i = 0; i < a.length; i++) {
a[i]=(int)(Math.random()*100);
}
System.out.println("排序前数组:");
System.out.println(Arrays.toString(a));
//从小到大排序 Arrays.sort(数组名);
Arrays.sort(a);
System.out.println("排序后数组:");
System.out.println(Arrays.toString(a));
}
//搜索
public static void test04() {
int a[]=new int[] {10,34,56,23,98};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//使用binarySearch之前,必须先使用sort进行排序;
System.out.println("数字23出现的位置:"+Arrays.binarySearch(a, 23));
}
//判断是否相同
public static void test05() {
//比较两个数组的内容是否相同
//第二个数组最后一个元素是 8 ,,和第一个数组不一样,所以结果返回是 Flase
int a[]=new int[] {23,24,45,76,7};
int b[]=new int[] {23,24,45,76,8};
System.out.println(Arrays.equals(a, b)); //输出的结果是true和Flase
}
//填充
public static void test06() {
//使用同一个值,填充整个数组
int a[]=new int[5];
Arrays.fill(a, 5);
System.out.println(Arrays.toString(a));
}
//测试 二维数组转化二维数组后,进过排序,再转化为二维数组 方法一
public static void test07() {
int a[][]=new int[5][8];
int n=0,m=0;
int b[]=new int[40];
System.out.println("这个随机的二维数组是:");
for (int i = 0; i <5; i++) {
for (int j = 0; j <8; j++) {
a[i][j]=(int)(Math.random()*100);
b[m++]=a[i][j];
System.out.print(a[i][j]+"\t");
n++;
if (n>=5) {
System.out.println();
n=0;
}
}
}
//把二维数组里面的数整合到一维数组内;
System.out.println("把二维数组里面的数整合到一维数组内:");
System.out.println(Arrays.toString(b));
System.out.println("对一维数组进行从小到大排序:");
Arrays.sort(b);
System.out.println(Arrays.toString(b));
System.out.println("经过排序后的二维数组:");
//复制一维数组里面的内容,逐一放入到二维数组里面: 方法一:
System.out.println("方法一:");
for (int i = 0; i <5; i++) {
for (int j = 0; j <8; j++) {
//重点!!!!
System.arraycopy(b, i*a[i].length, a[i], 0, a[i].length);
System.out.print(a[i][j]+"\t");
n++;
if (n>=5) {
System.out.println();
n=0;
}
}
}
}
//测试 二维数组转化二维数组后,进过排序,再转化为二维数组 方法二
public static void test08() {
int a[][]=new int[5][8];
int n=0,m=0;
int b[]=new int[40];
System.out.println("这个随机的二维数组是:");
for (int i = 0; i <5; i++) {
for (int j = 0; j <8; j++) {
a[i][j]=(int)(Math.random()*100);
b[m++]=a[i][j];
System.out.print(a[i][j]+"\t");
n++;
if (n>=5) {
System.out.println();
n=0;
}
}
}
//把二维数组里面的数整合到一维数组内;
System.out.println("把二维数组里面的数整合到一维数组内:");
System.out.println(Arrays.toString(b));
System.out.println("对一维数组进行从小到大排序:");
Arrays.sort(b);
System.out.println(Arrays.toString(b));
System.out.println("经过排序后的二维数组:");
System.out.println("方法二:");
//重点!!
for (int i = 0,k=0; i <5; i++) {
System.arraycopy(b, k, a[i], 0, a[i].length);
k+=8;
}
//定义一个字符串,目的为了放置数组;
String content=null;
for (int i = 0; i < 5; i++) {
content=Arrays.toString(a[i]);
System.out.println(content);
//==System.out.println(Arrays.toString(a[i]));
}
}
}