就我这发博客的频率,连我自己的看不下去了(⊙﹏⊙)
所以我又来啦
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);
}
又是干货满满的一篇博客,不愧是我~