文章目录
数组
介绍
数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。
及:数组就是一组数据
使用方式
方法一:动态初始化
数组的定义:数据类型 数组名[]=new 数据类型[大小]
int a[ ] = new int[3];
数组的引用(使用)
数组名[下标/索引]比如:你要使用a数组的第3个数 a[2]
方法二:动态初始化
语法:数据类型 数组名[];也可以 数据类型[] 数组名;
int a[];或者int[] a;
创建数组
语法:数组名 = new 数据类型[大小];
int [ ]a ;
a = new int [10];
double scores[ ];
scores = new double[5];
方法三:静态初始化
初始化数组
语法:数据类型 数组名[] = {元素值,元素值…}
int a[] = {2,3,4,40,5,89,56},如果知道数组有多少元素,具体的用法
相当于
int a[] = new int[9];
a[0]=2; a[1]=3; a[2]=4; a[3]=40;
a[4]=5; a[5]=89; a[6]=56;
数组注意事项
1.数组是多个相同数据类型的组合,实现对这些数据的统一管理
2.数组中的元素可以是任何数据类型,包括基本类型和引用类型,但不能混用
3.数组创建后,如果没有赋值,有默认值 int 0,short 0,byte 0,long 0,float 0.0,double 0.0,
char \u0000, boolean false,String null
4.使用数组的步骤 1.声明数组并开辟空间 2.给数组各个元素赋值 3。使用数组
5.数组的下标从0开始的
6.数组下标必须在指定范围内使用,否则报:下标越界正常,比如
int [] arr = new int[5];
则有效下标为0-4
7.数组属引用类型,数组型数据是对象(object)
练习
int[] a = {4, -1, 9,10,23};
int max = a[0];//假定第一个元素就是最大值
int maxIndex = 0;//定义下标值
for (int i=1; i<a.length; i++){//从下标1开始遍历数组
if (max < a[i]){//如果把max<当前元素
max = a[i];//把max设置成当前元素
maxIndex = i;
}
}
System.out.println("最大值="+max+"下标值"+maxIndex);
double[] hens = {3,5,1,3.4,2,50};
for (int i=0;i<6;i++) {
System.out.println("第" + (i + 1) + "元素的值=" + hens[i]);
}
//1.定义数组 char[] chars = new char [26]
//2.因为‘A'+1=’B‘类推,所以使用for赋值
//3.使用for循环访问所有元素
char[] chars = new char[26];
for (int i = 0;i<chars.length;i++){
chars[i] = (char)('A'+i);
}
//循环输出
for (int i = 0;i<chars.length;i++){
System.out.print(chars[i]+" ");
}
blic static void main(String[] args) {
//数据类型 数组名[] = new 数据类型[大小]
//循环输入5个成绩,保存到double数组,并输出
//1.创建一个double数组
double scores[] = new double[5];
//2.循环输入
//scores.length表示数组的大小/长度
Scanner sc = new Scanner(System.in);
for (int i=0;i<scores.length;i++){
System.out.println("请输入第"+(i+1)+"个元素的值");
scores[i] = sc.nextDouble();
}
//3.循环输出
for (int i=0;i<scores.length;i++){
System.out.println("第"+(i+1)+"个元素的值="+scores[i]);
}
数组赋值机制
1.基本数据类型赋值,这个值就是具体的数据,而且相互不影响
int n1 = 2; int n2 = n1;
2.数组在默认情况下是引用传递,赋的值是地址。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SB1MYlry-1620001956558)(images\内存图)]
数组拷贝
int[] arr1={10,20,30};
//创建一个新的数组arr2,开辟新的数据空间
//大小 arr1.length
int[] arr2 = new int [arr.length];
//遍历arr1,把每个元素拷贝到arr2对应的元素位置
for(int i = 0;i<arr1.length;i++){
arr2[i] = arr[i];
}
arr2[0] = 100;
//输出arr1
System.out.println("---------arr1的元素---------");
for(int i = 0; i<arr1.length;i++){
System.out.println(arr1[i]);//10,20,30
}
System.out.println("---------arr2的元素---------");
for(int i = 0; i<arr2.length;i++){
System.out.println(arr2[i]);//100,20,30
}
翻转数组
//1.把arr[0]和arr[5]进行交换{66,22,33,44,55,11}
//2.把arr[1]和arr[4]进行交换{66,55,33,44,22,11}
//3.把arr[2]和arr[3]进行交换{66,55,44,33,22,11}
//4.一共交换3次=arr.length/2
//5.每次交换时,对应的是下标,是arr[i]和arr[arr.length-1-i]
int arr[] = {11,22,33,44,55,66};
int temp = 0;
int len = arr.length;//计算数组的长度
for (int i = 0;i<len/2;i++){
temp = arr[len-1-i];//保存
arr[i] = temp;
}
System.out.println("-------翻转数组--------");
for (int i = 0; i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
二维数组
二维数组定义
int[][] a={{12,12,12},{13,13,13},{14,14,14}};
int[][] a1=new int [3][3];
int[][] a2=new int [][]{{12,12,12},{13,13,13},{14,14,14}};
int[][] a3;
二维数组的取值
for(int i = 0;i<a.length;i++){
for(int j = 0;j<a.length ;j++){
System.out.println(a[i][j]);
}
}
数组的复制
for循环遍历赋值
int[] a=new int[4];
int[] b= {45,12,65,87};
for (int i = 0; i < b.length; i++) {
a[i]=b[i];
}
System.out.print("赋值后a数组的值为:");
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+"\t");
}
通过System.arraycopy方法
System.arraycopy(a,0,a1,0,a.length);
1:被复制的数组
2:从被复制的数组的那个下标起复制
3:复制到那个数组中
4:复制到那个数组从什么复制开始复制
5:需要复制数组的个数
通过Arrays.copyOf()方法
a1=Arrays.copyOf(a,a.length);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MBkuqdtd-1620001956561)(images\copyof)]
1.要复制的数组
2.要复制的长度
a1==要复制到的数组
排序
冒泡排序
通过双重for循环,让数组中的每一个数去与其他数都做对比,如果这个数比后面的大,则通过容器转换,给转换过去
int[] arr= {12,34,54,23,65,123,};
System.out.print("排序前的数组为:");
for (int i = 0; i < arr.length; i++) {
System.out.print("\t"+arr[i]);
}
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println();
System.out.print("排序后的数组为:");
for (int j = 0; j < arr.length; j++) {
System.out.print("\t"+arr[j]);
}
Arrays.sort方法排序
Arrays.sort(数组名) 直接调用方法,进行排序
int[] arr= {13,98,78,97,67,45,123};
System.out.print("排序前的数组为:");
for (int i = 0; i < arr.length; i++) {
System.out.print("\t"+arr[i]);
}
Arrays.sort(arr);
System.out.println();
System.out.print("排序后的数组为:");
for (int j = 0; j < arr.length; j++) {
System.out.print("\t"+arr[j]);
}