今天我们继续来学习数组
数组是一堆相同类的数据集合,那么我们应该先要把数组中的数据打印浏览一遍,这种操作我们有个高大上的名称叫做遍历,那先来一段遍历的代码:
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积分)。
总结:今天学习的内容很丰富,对于数组相关的知识也更加巩固了,希望未来会更美好!