Java数组

就我这发博客的频率,连我自己的看不下去了(⊙﹏⊙)
所以我又来啦

1、核心概念

数组中存放的数据叫元素(element);
每个元素在数组中都有明确的位置,这个位置以下标或索引(index)表示(ps:下标是从0开始的,与日常生活的认知存在区别哦~);
数组个数=元素最大的index+1;
存放的元素是有序的;
数组中元素的个数也叫数组的长度(ps:数组长度一旦确定就不能更改了!!!)

2、一维数组

定义:
type[] arrayName 即 类型[] 数组名
ps:type可以是基本类型和对象类型。
ps:type arrayName []同样可以,但是不推荐。

2.1、初始化

public class Test01 {

	public static void main(String[] args) {
		// 静态初始化
		// type[] arrayName={x,x,x};
		byte[] array1 = { 2, 3, 4, 1 };
		int[] array2 = { 6, 3, 5, 4 };
		String[] array3 = { "ldz", "zsx", "syl", "lf" };
		// 动态初始化
		// 指明数组的长度
		int[] array4 = new int[4];
		array4[0] = 2;
		array4[1] = 5;
		array4[2] = 4;
		array4[3] = 6;
	}
}

2.2、常用命令

public class Test02 {

	public static void main(String[] args) {
		double[] array1 = { 1.1, 2.3, 3.4, 1.3, 2.5 };
		// 数组长度即元素个数
		// 数组名.length
		System.out.println("数组长度是:" + array1.length);
		int len = array1.length;
		System.out.println("数组长度是:" + len);
		System.out.println("--------------");
		// 获取数组元素
		// 数组名[下标]
		System.out.println("起始元素是:" + array1[0]);
		double d1 = array1[2];
		System.out.println("获取元素是:" + d1);
		System.out.println("末尾元素是:" + array1[len - 1]);
		System.out.println("--------------");
		// 数组下标越界
		// 报错:java.lang.ArrayIndexOutOfBoundsException
		int index = -1;// 最大下标/索引(index)= 数组个数 - 1
		if (index >= 0 && index < len) {
			double d2 = array1[index];
			System.out.println(d2);
		} else {
			System.out.println("下标错误");
		}
	}
}
public class Test03 {

	public static void main(String[] args) {
		int[] array1 = { 2, 3, 4, 1, 5 };
		int[] array2 = new int[5];
		array2[0] = 3;
		array2[1] = 2;
		array2[2] = 5;
		array2[3] = 9;
		array2[4] = 1;
		// 依次访问数组中的元素(数组的遍历)
		int a = array1[0];
		int b = array1[1];
		// int f = array1[5]; ps:越界了
		System.out.println(a);
		System.out.println(b);
		System.out.println("--------------");
		int arrayLen = array1.length;
		for (int i = 0; i <= arrayLen - 1; i++) {
			System.out.println(array1[i]);
		}
	}
}

public class Test04 {

	public static void main(String[] args) {
		// 数组的正序遍历
		int[] array = { 2, 3, 4, 1 };
		for (int i = 0; i < array.length; i++) {
			System.out.println(array[i]);
		}
		System.out.println("--------------");
		// 数组的倒序遍历
		for (int i = array.length - 1; i >= 0; i--) {
			System.out.println(array[i]);
		}
	}
}

2.3、命令练习

public class Test05 {
	public static void main(String[] args) {
		// 获取奇数
		int[] array = { 2, 3, 4, 1, 5 };
		for (int i = 0; i < array.length; i++) {
			int element = array[i];
			if (element % 2 != 0) {
				System.out.println(element);
			}
		}
	}
}

public class Test06 {
	public static void main(String[] args) {
		// 遍历求和
		int[] array = { 2, 3, 4, 1, 5 };
		int sum = 0;
		for (int i = 0; i < array.length; i++) {
			int element = array[i];
			sum += element;
		}
		System.out.println(sum);
	}
}

public class Test07 {
	public static void main(String[] args) {
		// 统计元素出现个数
		int[] array = { 2, 3, 4, 4, 1, 5, 4, 3 };
		int counter = 0;
		for (int i = 0; i < array.length; i++) {
			int element = array[i];
			if (element == 4) {
				System.out.println("捕获-->4");
				counter++;
			}
		}
		System.out.println("统计4的个数为:"+counter);
	}
}

public class Test08 {
	public static void main(String[] args) {
		// 获取字符串数组的元素长度与总长度
		String[] strArray = { "abc", "xcfb", "fdfba", "cs" };
		System.out.println("strArray元素个数:" + strArray.length);
		int sum = 0;
		for (int i = 0; i < strArray.length; i++) {
			String temp = strArray[i];
			int len = temp.length();
			sum = sum + len;
			System.out.println((i + 1) + "号元素:" + temp + " 	长度:" + len);
		}
		System.out.println("strArray的元素总长度: " + sum);
	}
}

public class Test09 {
	public static void main(String[] args) {
		// 统计字符串出现个数
		String[] strArray = { "abc", "cs", "xcfb", "cs", "fdfba", "cs" };
		int counter = 0;
		String strcount = strArray[1];
		for (int i = 0; i < strArray.length; i++) {
			String element = strArray[i];
			if (element.equals(strcount)) {
				counter++;
			}
		}
		System.out.println("字符串'"+strcount+"'的个数是:"+counter);
	}
}
public class Test02 {
	public static void main(String[] args) {
		// 获取最大元素
		double[] array = { 5.5, 2.3, 6.4, 5.6, 6.6, 6.3 };
		double max = array[0];// 假设第一个元素最大
		for (int i = 0; i < array.length; i++) {
			double temp = array[i];
			if (temp > max) {
				max = temp;
			}
		}
		System.out.println(max);
	}
}

public class Test05 {
	public static void main(String[] args) {
		// 求最大与最小值的差值
		double[] array = { 5.5, 2.3, 6.4, -5.4, 6.6, 6.3 };
		double max = array[0];
		double min = array[0];
		int len = array.length;
		for (int i = 0; i < len; i++) {
			double temp = array[i];
			if (temp > max) {
				max = temp;
			}
			if (temp < min) {
				min = temp;
			}
		}
		System.out.println("max = " + max);
		System.out.println("min = " + min);
		System.out.println("差值:" + (max - min));
	}
}

public class Test06 {
	public static void main(String[] args) {
		// 数组的逆置
		int[] array = { 1, 2, 3, 4 };
		int len = array.length;
		System.out.println("逆置前的遍历:");
		for (int i = 0; i < len; i++) {
			System.out.print(array[i] + " ");
		}
		System.out.println();
		for (int i = 0; i < len / 2; i++) {
			int temp = array[i];
			array[i] = array[len - 1 - i];
			array[len - 1 - i] = temp;
		}
		System.out.println("逆置后的遍历:");
		for (int i = 0; i < len; i++) {
			System.out.print(array[i] + " ");
		}
	}
}

2.4、增强for循环

public class Test07 {
	public static void main(String[] args) {
		// 学习简便的for循环,或者也被称为增强for循环
		int[] array = { 1, 2, 3, 4 };
		for(int i:array) {
			System.out.println(i);
		}
		String[] strArray= {"ab","cd"};
		for(String str:strArray) {
			System.out.println(str);
		}
	}
}

public class Test08 {

	public static void main(String[] args) {
		// 复制数组
		int[] array1 = { 9, 5, 2, 7 };
		int len = array1.length;
		int[] array2 = new int[len];
		for (int i = 0; i < len; i++) {
			array2[i] = array1[i];
		}
		// 增强for循环
		for (int i : array2) {
			System.out.println(i);
		}
	}
}

3、二维数组

public class Test03 {
	public static void main(String[] args) {
		// int类型的二维数组
		// 二维数组的每个元素是一个一维数组
		int[][] array= {{1,2},{3,4},{5,6}};
		int len=array.length;
		System.out.println(len);
		int[] element1=array[0];
		for(int i:element1) {
			System.out.println(i);
		}
		System.out.println("-----");
		// 从二维数组中取单个元素
		int temp=array[0][1];
		System.out.println(temp);
		// 修改元素
		array[0][0]=9;
		System.out.println(array[0][0]);
	}
}

public class Test04 {
	public static void main(String[] args) {
		int[][] array = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
		int len = array.length;
		for (int i = 0; i < len; i++) {
			int[] arr = array[i];
			for (int m = 0; m < arr.length; m++) {
				System.out.println(arr[m]);
			}
		}
	}
}

4、额外练习(ง •_•)ง

筛选了几道学习时的题目,这些都是宝藏呀~

        // 定义数组来存储个学生成绩{72,89,65,58,87....}。
		// 请统计各成绩等级
		//(90分以上为‘A’,80-89分为‘B’, 70-79分为‘C’,
		// 60-69分为‘D’, 60分以下为E)学生人数
		int[] array3= {72,89,65,58,87};
		int counterA=0;
		int counterB=0;
		int counterC=0;
		int counterD=0;
		int counterE=0;
		for(int i=0;i<array3.length;i++) {
			if(array3[i]>=0&&array3[i]<=100) {
				if(array3[i]>=90) {
					counterA++;
				}else if(array3[i]>=80&&array3[i]<=89) {
					counterB++;
				}else if(array3[i]>=70&&array3[i]<=79) {
					counterC++;
				}else if(array3[i]>=60&&array3[i]<=69) {
					counterD++;
				}else {
					counterE++;
				}
			}else {
				System.out.println("输入分数错误");
			}
		}
		System.out.println("等级A的学生人数:"+counterA);
		System.out.println("等级B的学生人数:"+counterB);
		System.out.println("等级C的学生人数:"+counterC);
		System.out.println("等级D的学生人数:"+counterD);
		System.out.println("等级E的学生人数:"+counterE);

        //请利用数组实现课堂随机点名系统
		Random random=new Random();
		String[] str= {"***","+++","**"};
		int length=str.length;
		int index=random.nextInt(length);
		System.out.println("让"+str[index]+"来回答问题");
		
		// 10、请将数组{1,2,3,2,4,1,4,3}中不重复的元素存入一个新的数组。
		// 要求:新数组中元素不重复出现。
		int[] array = {1,2,3,2,4,1,4,3};
		int len=array.length;
		int count=0;
		int counter=0;
		for(int i=0;i<len;i++) {
			for(int j=i;j<len;j++) {
				if(array[i]==array[j]) {
					count++;//count本身会比较一次+1,后面有重复会再+1
				}
			}
			if(count==1) {
				counter++;
			}
			count=0;
		}
		int[] arr=new int[counter];
		int index=0;
		for(int i=0;i<len;i++) {
			for(int j=i+1;j<len;j++) {
				if(array[i]==array[j]) {
					array[j]=0;
				}
			}
			if(array[i]!=0) {
				arr[index]=array[i];
				index++;
			}
		}
		for(int i:arr) {
			System.out.println(i);
		}

又是干货满满的一篇博客,不愧是我~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值