2020.1.16 Java数组基础

今天学习了一维数组的基础,以及对数组进行常规化处理的Arrays类(toString .equals .sort .fill .copyOf .copyOfRange .binarySearch),和System类的arraycopy方法。

1. Arrays.toString( )

直接输出数组是显示不出来的,要调用Arrays.toString()方法将其转换为字符串再输出。
import java.util.Arrays;
public class E {
	public static void main(String[] args) {
		int[] num= {23,34,6,2,31,9};
		System.out.println(Arrays.toString(num));
	}
}

运行结果

在这里插入图片描述

2. Arrays.equals( )

比较两个数组是否一样。

import java.util.Arrays;

public class C {
	public static void main(String[] args) {
		String[] one= {"A","3","FDF","65","abc"};
		String[] two= {"B","DF","89","ahg","9"};
		String[] three= {"A","3","FDF","65","abc"};
		boolean is=Arrays.equals(one, three);
		boolean is2=Arrays.equals(one, two);
		System.out.println("one和two的比较结果为:"+is);
		System.out.println("onr和three的比较结果为:"+is2);
	}
}

运行结果

在这里插入图片描述

3. Arrays.sory( )

对数组进行排序(数字 英文),汉字不可以。

import java.util.Arrays;

public class D {
	public static void main(String[] args) {
		int[] number= {4,3,24,35,622,2,56,31,8,46};
		System.out.println("排序前:"+Arrays.toString(number));
		Arrays.sort(number);
		System.out.println("排序后:"+Arrays.toString(number));
	}
}

运行结果

在这里插入图片描述

4. Arrays.fill( )

对数组进行填充。

import java.util.Arrays;

public class E {
	public static void main(String[] args) {
		int[] num=new int[100];
		System.out.println("填充前:"+Arrays.toString(num));
		Arrays.fill(num, 9);
		System.out.println("填充后:"+Arrays.toString(num));
	}
}

运行结果

在这里插入图片描述

5. Arrays.copyOf( ),copyOfRange( )和System.arraycopy( )

System.arraycopy(被复制的数组,复制的开始位置,目标数组,复制到目标数组的那个位置,要复制的个数)

import java.util.Arrays;

public class F {
	public static void main(String[] args) {
		String[] number={"李敏镐","肖战","迪丽热巴","陈飞宇","吴亦凡","王一博","朱亚文"};
		System.out.println(Arrays.toString(number));
		String[] newnum=new String[5];
		//Arrays.copyOf
		newnum=Arrays.copyOf(number, 5);
		System.out.println("复制后:"+Arrays.toString(newnum));
		//Arrays.copyOfRange
		newnum=Arrays.copyOfRange(number, 1, 6);
		System.out.println("复制下标1至5之间的元素:"+Arrays.toString(newnum));
		//System.arraycopy
		System.arraycopy(number, 1, newnum, 0, 5);
		System.out.println(Arrays.toString(newnum));
		
	}
}

运行结果

在这里插入图片描述

6. 练习

1. 洗牌
定义一个i 从最后一位开始 ,先产生一个随机数index,把这个随机数当作要和最后一位交换牌的数组下标,依次交换直到第一位停止。

import java.util.Arrays;
import java.util.Random;

public class A {
	public static void main(String[] args) {
		String[] pie= {"♥A","♠A","✿A","♦A","♥2","♠2","✿2","♦2","♥3","♠3","✿3","♦3","♥4","♠4","✿4","♦4"};
		System.out.println("洗牌前:");
		System.out.println(Arrays.toString(pie));
		Random ran=new Random();
		for(int i=pie.length-1;i>=1;i--) {
			int index=ran.nextInt(i);
			String temp=pie[i];
			pie[i]=pie[index];
			pie[index]=temp;
		}
		System.out.println("洗牌后:");
		System.out.println(Arrays.toString(pie));
	}
}

运行结果

在这里插入图片描述
2. 产生扑克的所有花色

运用foreach循环

import java.util.Arrays;

public class B {
	public static void main(String[] args) {
		String[] number= {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
		String[] puk= {"♥","♠","✿","♦"};
		String[] newpuk=new String[number.length*puk.length];
		int i=0;
		for(String num:number) {
			for(String pukk:puk) {
				newpuk[i]=pukk+num;
				i++;
			}
		}
		System.out.println(Arrays.toString(newpuk));
	}
}

运行结果

在这里插入图片描述
3. 抽奖一百次,统计每个人被抽到的次数放入数组,输出最多的那个人

import java.util.Arrays;
import java.util.Random;

public class A {
	public static void main(String[] args) {
		Random ran=new Random();
		String[] lucky= {"李敏镐","肖战","迪丽热巴","陈飞宇","吴亦凡","王一博","朱亚文","王嘉尔","宋祖儿","胡一天"};
		int[] counts=new int[lucky.length];
		for(int i=0;i<100;i++) {
			int index=ran.nextInt(lucky.length);
			counts[index]++;
		}
		System.out.println(Arrays.toString(counts));
		//最大次数max
		int max=counts[0];
		//最大次数的下标
		int maxindex=0;
		for(int j=1;j<counts.length;j++) {
			if(counts[j]>max) {
				max=counts[j];
				maxindex=j;
			}
		}
		System.out.println("最大次数为:"+max);
		System.out.println("下标为:"+maxindex);
		System.out.println("神赐之人为:"+lucky[maxindex]);
	}
}

运行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值