数组部分的学习完后的一些总结,后续还会有练习的总结

数组

基本认识:容器,可以存储一组数据(多个),java中的数组

数组的基本概念及作用

特殊数组类型(数据结构)

创建数组时,需要给定数据类型,只能储存同一类的数据

数组是引用类型,对象(下章)--->可以存储多个值的容器

声明 创建

声明一个数组,创建一个数组

创建之初需要给定数组的容量;

声明两种写法:int[ ] a= new int[ 5];建议使用这种

int b[ ]= new int[10 ];

System.out.println(a);输出给我们一个地址

System.out.println(Arrays.toString(a));把数组以字符串的形式输出,便于调试

创建数组时,为数组赋值,容量就由值得个数决定

int[] a = new int[5];
System.out.println(Arrays.toString(a));
int[] b = new int[10];
System.out.println(Arrays.toString(b));
int[] c = new int[]{1, 2, 3, 4, 5, 6, 7};
System.out.println(Arrays.toString(c));
char [] ch= new char[5];
System.out.println(Arrays.toString(ch));
float [] fl= new float[5];
System.out.println(Arrays.toString(fl));
double [] doubles= new  double[5];
System.out.println(Arrays.toString(doubles));
String [] strings= new String[5];
System.out.println(Arrays.toString(strings));
boolean [] booleans= new boolean[5];
System.out.println(Arrays.toString(booleans));

当我们没有给数组赋值时,数组就会给我们一个默认值

[0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] [1, 2, 3, 4, 5, 6, 7] [ , , , , ] [0.0, 0.0, 0.0, 0.0, 0.0] [0.0, 0.0, 0.0, 0.0, 0.0] [null, null, null, null, null] [false, false, false, false, false]

数组元素访问

数组里面可以存储多个值,如何访问(赋值,获取)数组中的每一个值

数组中每一个空间,都有一个下标(索引 index 编号)

特点:整数 开始0[1,2,3,4,5] 最大索引(长度-1)

0 1 2 3 4

数组名加数组索引就可以获取到该位置的值

数组长度是有限制的 最大也就是int的最大值

数组内部空间必须是连续的

数组遍历 :取出数组中的每一个值

int [] a= new int[]{2,4,6,8,10};
for (int i=0;i<a.length;i++){ 
    System.out.println(a[i]);
}

增强for(类型 变量:数组){}

隐藏遍历细节,每次从数组中取出一个元素

for(int t : a){
System.out.println(t);
}

小练习:查询数组中的最大值(小白的我刚拿到还是很懵的,因为最大的问题是无从下手,没有思路,还是要多练啊!!!!!!)

int [] a= new int[]{2,4,6,8,10};//随意定义个数组
int max =a[0];//假设最大值在第一位
for (int m=0;m<a.length-1;m++){
    if (a[m+1]>a[m] ){//判断第一位和下一位的大小
     max=a[m+1];//下一位大就把下一位赋给最大值,否则执行else
    }
    else {//下一位小就把下一位替换成max继续作比较
        a[m+1]=a[m];
        max=a[m];
    }
}System.out.println(max);//最后输出就行了

排序

冒泡排序:

外层循环是需要跑的趟数,

内层循环是每趟比较的次数,拿出一个数之后与下一个数进行比较,如果大于就将两个数交换位置.

nt [] a = new int []{10,8,6,4,2};
for (int i =0;i<a.length-1;i++){//趟数
    for (int j=0;j<a.length-1-i;j++){//每趟的次数
        if (a[j]>a[j+1]){//比较,左大于右升序
            int temp=a[j];//存储
            a[j]=a[j+1];
            a[j+1]=temp;
        }
    }
}System.out.println(Arrays.toString(a));

选择排序:

未优化时: 从第一个元素开始,与后面的每一个元素进行比较,把较小的元素与当前元素进行交换

int[] a=new int[]{1,5,4,3,2};
for (int k=0;k<a.length-1;k++){
    for(int y=k+1;y<a.length;y++){
        if (a[k]>a[y]){
            int temp=a[k];
            a[k]=a[y];
            a[y]=temp;
        }
    }
}System.out.println(Arrays.toString(a));

优化后:假设第一个是最小的,与后面每一个进行比较,把较小的元素进行记录,最后进行交换

int[] a=new int[]{1,5,4,3,2};
for (int k=0;k<a.length-1;k++){
    int minIndex=k;//假设第一个是最小的
    for(int y=k+1;y<a.length;y++){
        if (a[minIndex]>a[y]){//最小的与下一位比较
            minIndex=y;//小于第一个就记录下来
        }
    }
    int temp = a[minIndex];//在与所有比较完后进行交换
    a[minIndex]=a[k];
    a[k]=temp;
}System.out.println(Arrays.toString(a));

二维数组

数组中的元素又是一个数组

int[][] a=new int[3][2];
//[3][2]二维数组的长度是3,二维数组中的每一个一维数组的长度是2
//int b[][];(不建议使用)

二维数组遍历

int[][] a=new int[3][2];
for(int i=0;i<a.length;i++){//外层循环负责拿到每一个一维数组
    for(int j=0;j<a[i].length;j++){//内层循环负责一维数组遍历
        System.out.print(a[i][j]+" ");
    }
    System.out.println();//换行
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

020709

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值