Java学习数组再见

今天我们继续来学习数组

数组是一堆相同类的数据集合,那么我们应该先要把数组中的数据打印浏览一遍,这种操作我们有个高大上的名称叫做遍历,那先来一段遍历的代码:

int [] a={1,3,2,6,4,5,8,9,7,0};
for (int i = 0; i < a.length; i++) 
{
	System.out.print(i+" ");
}

每种语言都有其独特的地方,Java在数组遍历这边有个强遍历,代码如下:

for(int i:a)
{
	System.out.print(i+" ");
}

 结果虽然一样,但是不是感觉代码量变少了许多?

然后直接上个小题目,“输入数字,创建相应班级人数的分数,还要各不相同”,废话不多说,直接上代码:

System.out.println("输入数字:");
int j=scanner.nextInt();
int []b=GetScore(j);
System.out.println("Array打印:"+Arrays.toString(b));

对应的GetScore()函数:

public static int[] GetScore (int j) {
	int [] a=new int [j];
//	int max=100,min=0;
	Random random=new Random();
	
	System.out.println("生成数组:");
	a[0]=random.nextInt(101);
	for (int i = 1; i < a.length; ) {
		/*double d=Math.random();
		a[i]=(int) (d*(max-min+1)+min);*/
		int x=random.nextInt(101);
		int k = 0;
		for (; k < i; k++) {
			if (x==a[k]) {
				break;
			}
		}
		if (k==i) {
			a[i]=x;
			System.out.print(a[i]+" ");
			i++;
		}
	}
	return a;
}

我用了两种随机生成数据,各自都有其特点。

然后自己做了一个判断两个数组是否相同的函数,代码如下:

int[] f={1,2,3,4,5};
int[] g={1,2,3,4,6};
System.out.println("数组是否相同:"+XT(f, g));

public static boolean XT(int []a,int []b) {
	boolean flag=true;
	if (a.length!=b.length)
	{
		flag=false;
	}
	if(a==null||b==null)
	{
		flag=false;
	}
	for (int i = 0; i < a.length; i++) {
			if (a[i]==b[i]) {
				continue;
			}else {
				return false;
			}
	}
	return flag;
}

之后学习了拷贝数组,拷贝数组系统给了3种方法,当然可以自定义函数,代码如下:

int []d=new int []{1,2,3,4,5,6,7,8,9};
System.out.println("原数组:"+Arrays.toString(d));
int []e=null;
e=Arrays.copyOf(d, 5);                           //数组拷贝
System.out.println("Arrays.copyof:"+Arrays.toString(e));
e=Arrays.copyOfRange(d, 2, 6);
System.out.println("Arrays.copyofrange:"+Arrays.toString(e));     //数组范围拷贝
String[] sabc = {"Mircosoft","IBM","Sun","Oracle","Apple"};
String[] sBak = new String[6];
System.arraycopy(sabc, 1, sBak, 0, 4);
System.out.println("System.arraycopy:"+Arrays.toString(sBak));

接着学习了编码解码,我们常用的编码如“UTF-8”和“GBK”有时候弄乱了会造成乱码,所以为了解决他们,必要先学习其原理,“UTF-8”将中文解析成3个字节数组,而“GBK”将中文解析成2个字节数组,所以如果用“GBK”的编码器去组合3个字节的数组,必然会引起乱码,同理也不能用“UTF-8”的编码器去组合2个字节的数组。具体实现直接上代码:

String name="我好帅";
System.out.println(name);
byte[] byte1=name.getBytes("UTF-8");
byte[] byte2=name.getBytes("GBK");
System.out.println("UTF-8编码是:"+Arrays.toString(byte1));
System.out.println("GBK编码是:"+Arrays.toString(byte2));
String nameString1=new String(byte1,"UTF-8");
String nameString2=new String(byte2,"GBK");
System.out.println("你的名字是"+nameString1+"  "+nameString2);

 最后,我又回顾了文件映射类,又学习了一波最简单的迭代,代码如下:

String fileString=scanner.nextLine();
File file=new File(fileString);
PrintFile(file);

public static void PrintFile(File file) {
	if (file.isDirectory()) {
		File[] files=file.listFiles();
		for (File i:files) {
			PrintFile(i);
		}
	}else {
		System.out.println(file.getName()+"  ");
	}
}

 

 所有代码都已经上传,想要学习请自行下载(免费开源0积分)。

总结:今天学习的内容很丰富,对于数组相关的知识也更加巩固了,希望未来会更美好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值