这次是2021年01月12日的学习成果,总结于此,以便于之后的学习查漏补缺
文章目录
一、数组是什么?
数组:数组就是一种用于存储数据的典型数据源结构,是将类型相同的若干数据有序的形式组织起来的一种形式。
数组知识点:
1.数组有一个名字,称为数组名。
2.数组中存放的数据叫做元素(element)
3.每个元素在数组中都有确切的位置,这个位置用下标或者索引(index)来表示。请注意:下标是从0开始的。
4.数组个数=元素最大index+ 1
5.数组中存放的元素是有序的
6.数组中元素的个数,常被称为数组的长度(length);
请注意:数组的长度一旦确定就不能修改。
二、一维数组
定义:
type[] arrayName type可以使基本对象和数据类型
创建数组(静态/动态)
获取数组下标及常见错误类型
public static void main(String[] args) {
//type[] arrayName = {x,x,x,x,x};
//静态创建
int[] array1 = {1,6,8,9,7};
float[] array2 = {5.6F,6.2F,9.7F,7.8F,6.5F,6.5F};
//动态创建
int[] array3 = new int[3];
array3[0] = 2;
array3[1] = 5;
array3[2] = 6;
System.out.println(array1.length);
System.out.println(array2.length);
int len = array1.length;
//获取数组元素 数组名[下标]
System.out.println(array1[2]);
//java.lang.ArrayIndexOutOfBoundsException
//错误类型:数组下标范围越界
//System.out.println(array2[-1]);
System.out.println("----------------");
int a1 = array1[2];
System.out.println("数组array1第3个元素:"+a1);
System.out.println("数组array1最后一个元素:"+array1[len-1]);
System.out.println("----------------");
int index = -1;
if(index >=0 && index<len) {
System.out.println(array1[index]);
}else {
System.out.println("输入下标有误");
}
}
获取数组长度及每个元素的长度
public static void main(String[] args) {
String[] strArray = {"asd","fsgsf","yrng","nbnc"};
//输出数组的总长度
System.out.println(strArray.length);
//输出数组中每一个元素的长度
int sum = 0;
for(int i =0;i<strArray.length;i++) {
String temp = strArray[i];
int len = temp.length();
sum = sum + strArray[i].length();
System.out.println("元素为:"+temp+"它的长度为:"+len);
}
System.out.println("数组中元素总长度为:"+sum);
}
}
一维数组中某个元素出现了几次
public static void main(String[] args) {
//一维数组中某个元素出现了几次
String[] strArray = {"asd","asd","yng","nbc"};
int counter = 0;
for(int i=0;i<strArray.length;i++) {
String string = strArray[i];
if(string.equals("asd")) {
counter++;
}
}
System.out.println(counter);
}
求数组中最大/最小值
public static void main(String[] args) {
//求一维数组的最大、最小值
double[] array = {2.2,3.3,4.4,6.6,-7.7,8.8,9.9};
double max = array[0];
double min = array[0];
int length = array.length;
for(int i = 0;i<length;i++) {
if(array[i]>max) {
max = array[i];
}
if(array[i]<min) {
min = array[i];
}
}
System.out.println("当前数组最大值为:"+max);
System.out.println("当前数组最小值为:"+min);
System.out.println("最大值和最小值差为:"+ (max-min) );
}
数组的遍历与逆置
public static void main(String[] args) {
//遍历与逆置
int[] array = {1,2,3,4};
int len = array.length;
for(int i =0;i<len;i++) {
System.out.print(array[i]+ " ");
}
System.out.println("这是逆置前的遍历");
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]+" ");
}
}
利用增强for循环遍历数组
public static void main(String[] args) {
// 学习简便的for循环,也可以叫增强for循环
int[] array1 = {1,2,3,4,5};
for(int i : array1) {
System.out.println(i+" ");
}
String[] strArray = {"ab","cd"};
for(String str : strArray) {
System.out.println(str);
}
}
复制数组
public static void main(String[] args) {
//复制数组
int[] array1 = {1,2,1,3,8};
int len = array1.length;
int[] array2 = new int[len];
for(int i : array1) {
System.out.println(i);
}
}
将两个数组组合成一个新的数组
public static void main(String[] args) {
int[] array1 = {5,6,7,9};
int[] array2 = {6,4,8,7};
int len1 = array1.length;
int len2 = array2.length;
int len3 = len1 + len2;
int[] array3 = new int[len3];
for(int i =0;i<len3;i++) {
if(i<len1) {
array3[i] = array1[i];
}else {
array3[i] = array2[i-len1];
}
}
for(int i : array3) {
System.out.print(i+" ");
}
}
三、多维数组
一般使用二维数组,三维及以上数组通常不会使用,二维数组可以方便地表示表格类数据
二维数组
public static void main(String[] args) {
//int类型的二维数组
int[][] array = {{1,2},{3,4},{5,6}};
int len = array.length;
System.out.println(len);
System.out.println("---------------------");
//二维数组的每个元素是一个一维数组
int[] element1 = array[0];
for(int i : element1) {
System.out.println(i);
}
System.out.println("---------------------");
//从二维数组中取单个数据元素
int temp = array[0][1];
System.out.println(temp);
}
遍历二维数组
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 k =0;k<arr.length;k++) {
System.out.println(arr[k]);
}
}
}
利用数组做出随机点名系统
import java.util.Random;
public class Work07 {
public static void main(String[] args) {
Random random = new Random();
String[] str = {"小明","小强","小红"};
int len = str.length;
int index = random.nextInt(len);
System.out.println("点到名的答到:"+str[index]);
}