数组的定义:
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
/**
* 数组的作用:用来存储相同类型的数据
* 以int类型数据为案例:数组用来存储int类型数据
* 1》声明定义数组
* int【】 arr 定义一个int类型的数组,名字为arr
* int arr2【】
* 如果数组只声明,没有后续操作,那么这个数组相当于没有定义
* int 【】 arr3=null; 空 数组赋值为null和和什么都没有赋值 不一样的效果
*
* 2》创建
* arr=new int【4】; 给数组开辟了一个长度为4的空间
* int 【】arr=new int【4】;声明和创建和为一句话
* 3》赋值
* arr[0]=12;
* arr[1]=1255;
* arr[2]=1;
* arr[3]=232;
* ====================arr[4]=16452;-------------数组索引越界
*
* 4》使用
*System.out.println(arr[1]);
*数组的长度
* System.out.println(arr.length);
*
*
*/
public class TestArray02 {
public static void main(String[] args) {
}
}
数组的使用:
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
import java.util.Scanner;
/**
* 功能:键盘录入十个学生的成绩,求和,求平均数
*
*/
public class TestArray03 {
public static void main(String[] args) {
int[] scores=new int[10];
int sum=0;
Scanner sc=new Scanner(System.in);
for (int i = 0; i < 10; i++) {
System.out.println("请录入第"+(i+1)+"个学生的成绩");
int score=sc.nextInt();
scores[i]=score;
sum+=score;
}
System.out.println("十个学生的成句之和为"+sum);
System.out.println("十个学生成绩平均数为:"+sum/10);
//求取第6个学生的成绩
// System.out.println(scores[5]);
//数组的遍历----》方式一
// for (int i = 0; i <= 9; i++) {
// System.out.println(scores[i]);
// }
//增强for循环 ----------》方式二
//对scores数组进行遍历,遍历出来每个元素都用int类型的num接收:
// int count=0;
// for(int num:scores){
// //每次豆浆num在控制台输出
// System.out.println("第"+count+"个学生的成绩为:"+num);
// }
/**
* 增强for循环
* 优点:代码简单
* 缺点:单纯的增强for循环不能涉及跟索引相关的操作
*/
//方式三:利用普通的for循环:逆向遍历:
for (int i=9;i>=0;i++){
System.out.println(scores[i]);
}
}
}
求取数组中的最大值
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
/**
* 求最大值
*/
public class TestArray04 {
public static void main(String[] args) {
//1.定义一个数组
int[] arr = {12, 3, 7, 4, 8, 125, 9, 45, 666, 36};
//2.求出数组中的最大值:
int num = getMaxNum(arr);
System.out.println("当前数组中最大的数为:" + num);
}
public static int getMaxNum(int[] arr) {
int maxNum = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > maxNum) {
maxNum = arr[i];
}
}
return maxNum;
}
}
查询元素对应的索引
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
public class TestArray05 {
public static void main(String[] args) {
int[] arr={12,34,56,7,3,10};
System.out.println(arr[2]);
//查询56对应的索引
int index=getindex(arr,56);
if (index!=-1){
System.out.println("元素对应的索引:"+index);
}else {
System.out.println("查无此书!");
}
}
public static int getindex(int []arr,int ele){
int index=-1;//初始值只要不是数组的索引就行
for (int i=0;i<arr.length;i++){
if(arr[i]==ele){
index=i;//只要找到了元素,那么index就变成i
break;
}
}
return index;
}
}
数组添加元素
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
import java.util.Scanner;
public class TestArray07 {
public static void main(String[] args) {
//给定一个数组,在数组下标为2的位置上添加一个元素91
int[] arr = {12, 34, 56, 7, 3, 10};
//输出增加元素前的数组
System.out.print("增加元素前的数组:");
for (int i = 0; i < arr.length; i++) {
if (i != arr.length - 1) {
System.out.print(arr[i] + ",");
} else {
System.out.print(arr[i]);
}
}
//从键盘接受数据
Scanner sc=new Scanner(System.in);
System.out.print("\n请录入你要添加元素的指定下标:");
int index=sc.nextInt();
System.out.print("请录入你要添加的元素:");
int ele=sc.nextInt();
//增加元素
insertEle(arr,index,ele);
/**
* arr[5]=arr[4];
* arr[4]=arr[3];
* arr[3]=arr[2];
*/
//输出后增加元素后的数组
System.out.print("\n增加元素后的数组:");
for (int i = 0; i < arr.length; i++) {
if (i != arr.length - 1) {
System.out.print(arr[i] + ",");
} else {
System.out.print(arr[i]);
}
}
}
/**
* 提起一个添加元素的方法:
* 在数组的指定位置上添加一个指定的元素
* 在哪个数组的哪个位置添加哪个元素
* 不确定因素:形参:哪个数组,哪个位置,哪个元素
* 返回值:无
*/
public static void insertEle(int []arr,int index ,int ele){
for (int i = arr.length - 1; i >= (index+1); i--) {
arr[i] = arr[i - 1];
}
arr[index] = ele;
}
}
删除数组元素
/**
* @Author zhengwang
* @Date 2023/11/7 10:45
* @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
* @ClassName: TestArray08
* @Description: TODO 给定一个数组,删除下标为2元素
* @Version 1.0
*/
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
import java.util.Arrays;
public class TestArray08 {
public static void main(String[] args) {
int[] arr = {12, 34, 56, 7, 3, 10};
//输出删除前的数组:
System.out.println("删除前的数组" + Arrays.toString(arr));
//删除
// arr[2]=arr[3];
// arr[3]=arr[4];
// arr[4]=arr[5];
int index = 2;
for (int i = index; i <= arr.length - 2; i++) {
arr[i] = arr[i + 1];
}
arr[arr.length - 1] = 0;
//输出删除后的数组
System.out.println("删除后的数组" + Arrays.toString(arr));
}
}
/**
* @Author zhengwang
* @Date 2023/11/7 11:02
* @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
* @ClassName: TestArray09
* @Description: TODO
* @Version 1.0
*/
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
import java.util.Arrays;
public class TestArray09 {
public static void main(String[] args) {
int[] arr = {12, 34, 56, 7, 3, 10,34,45,56,7,666};
//输出删除前的数组:
System.out.println("删除前的数组" + Arrays.toString(arr));
//找到要删除的元素对应的索引即可
int index = -1;
for (int i=0;i<arr.length;i++){
if (arr[i]==333){
index=i;
break;
}
}
//删除
// arr[2]=arr[3];
// arr[3]=arr[4];
// arr[4]=arr[5];
// int index = 2;
if (index!=-1){
for (int i = index; i <= arr.length - 2; i++) {
arr[i] = arr[i + 1];
}
arr[arr.length - 1] = 0;
}else {
System.out.println("根本没有你要删除的元素!");
}
//输出删除后的数组
System.out.println("删除后的数组" + Arrays.toString(arr));
}
}
可变参数
/**
* @Author zhengwang
* @Date 2023/11/7 14:09
* @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
* @ClassName: TestArray12
* @Description: TODO1)可变参数:作用提供了一个方法,参数的个数是可变的,解决了部分方法重载问题
* int...num
* double...num
* boolean...num
*
* 2)可变参数在JDK1.5之后加入的新特性
*3)方法的内部对可变参数的处理跟数组是一样的
*4)可变参数和其它数据一起作为形参的时候,可变参数一定要放到最后
* 5)我们自己在写代码的时候,建议不要使用可变参数
* @Version 1.0
*/
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
public class TestArray12 {
public static void main(String[] args) {
// method01(10);
// method01();
// method01(20,30,40);
method01(30,40,50,60,70);
// method01(new int[]{11,22,33,44});
}
public static void method01(int num2,int...num){
System.out.println("--------------1");
for (int i:num){
System.out.println(i+"\t");
}
System.out.println();
System.out.println(num2);
}
}
数组的复制
/**
* @Author zhengwang
* @Date 2023/11/7 14:53
* @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
* @ClassName: TestArray13
* @Description: TODO
* @Version 1.0
*/
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
import java.util.Arrays;
public class TestArray13 {
public static void main(String[] args) {
//给定一个数组:
int[] arr={1,3,7,2,4,8};
//toString:对数组进行遍历查看,返回的是一个字符串,这个字符串比较好看
System.out.println(Arrays.toString(arr));
//binarySearch:二分法查找,找出指定数组中的指定元素对应的索引
//这个方法的使用的前提:一定要查看的是一个有序的数组:
//sort:排序----》升序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.binarySearch(arr,4));
int[] arr2={1,3,7,2,4,8};
//copyOf:完成数组的复制
int [] newArr=Arrays.copyOf(arr2,4);
System.out.println(Arrays.toString(newArr));
//copyOfRange:区间复制:
int [] newArr2=Arrays.copyOfRange(arr2,1,4);//[1,4)---->1,2,3位置
System.out.println(Arrays.toString(newArr2));
//equals:比较两个数组的值是否一样:
int[] arr3={1,3,7,2,4,8};
int[] arr4={1,3,7,2,4,8};
System.out.println(Arrays.equals(arr3,arr4));//true
System.out.println(arr3==arr4);// false ==比较左右两侧的值是否相等 比较的是左右的地址值,返回结果一定是false
//fill:数组的填充
int[] arr5={1,3,7,2,4,8};
Arrays.fill(arr5,11);
System.out.println(Arrays.toString(arr5));
}
}
/**
* @Author zhengwang
* @Date 2023/11/7 16:19
* @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
* @ClassName: TestArray14
* @Description: TODO
* @Version 1.0
*/
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
import java.lang.reflect.Array;
import java.util.Arrays;
public class TestArray14 {
public static void main(String[] args) {
//给一个源数组
int [] srcArr={11,22,33,44,55,66,77,88};
//给一个目标数组:
int [] destArr=new int[10];
//复制
System.arraycopy(srcArr,1,destArr,3,3);
//遍历查看目标数组:
System.out.println(Arrays.toString(destArr));
}
}
二维数组的遍历
/**
* @Author zhengwang
* @Date 2023/11/7 16:36
* @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
* @ClassName: TestArray15
* @Description: TODO--二维数组的定义与遍历
* @Version 1.0
*/
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
public class TestArray15 {
public static void main(String[] args) {
//定义一个二维数组
int[][] arr=new int[3][];//本质上定义了一个一维数组,长度为3
int[] a1={1,2,3};
arr[0]=a1;
arr[1]=new int[]{4,5,6,7};
arr[2]=new int[]{9,10};
//读取6这个元素
// System.out.println(arr[1][2]);
//遍历二维数组
//方式1:外层普通for循环+内层普通for循环:
// for (int i = 0; i <= 2; i++) {
// for (int j=0;j<arr[i].length;j++){
// System.out.print(arr[i][j]+"\t");
// }
// System.out.println();
// }
//方式2:外层普通for循环+内层增强for循环
// for (int i=0;i<arr.length;i++){
// for (int num:arr[i]){
// System.out.print(num+"\t");
// }
// System.out.println();
// }
//方式3:外层增强for循环+内层增强for循环
// for (int[]a:arr){
// for (int num:a){
// System.out.print(num+"\t");
// }
// System.out.println();
// }
//方式5:外层增强for循环+内层普通for循环
for (int[]a:arr){
for (int i=0;i<a.length;i++){
System.out.print(a[i]+"\t");
}
System.out.println();
}
}
}
/**
* @Author zhengwang
* @Date 2023/11/7 16:57
* @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
* @ClassName: TestArray16
* @Description: TODO
* @Version 1.0
*/
package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
public class TestArray16 {
public static void main(String[] args) {
int[][] arr=new int[3][2];
//本质上:定义一维数组,长度为3,每个数组“格子”中,有一个默认的长度为2的数组
arr[1]=new int[]{1,2,3,4};
//数组遍历
for (int[] a:arr){
for (int num:a){
System.out.print(num+"\t");
}
System.out.println();
}
}
}