数组的定义、声明、初始化、遍历、冒泡排序

数组
什么是数组?
数组是存放数据长度固定的容器,并且其数据类型也是一致的。

怎么声明数组?

下面这个就是声明数组的例子
int[] arr;
int 数组的数据类型,数组中要存储什么类型的数据
[] 代表它是一个数组
arr 数组的名字,自己定义的

数组怎么声明并初始化?

方式一 静态初始化
数组的数据类型[] 数组名 = new 数组的数据类型[]{元素1,元素2,元素3...};
例:
int[] arr0 = new int[]{2,4,6,8};
这个数组有四个元素  所以它的长度为4

方式二 隐式初始化
数组的数据类型[] 数组名 = {元素1,元素2,元素3...}
例:
double[] arr1 = {2.2,3.3,4.4};

方式三 动态初始化
数组的数据类型[] 数组名 = new 数组的数据类型[长度];
数组名[下标] = 值;
[长度]:数组的长度,可以存放多少个元素
这里明确一个概念,数组的下标是从0开始计算的
例:
int[] arr2 = new int[3];//[3]代表这个数组可以存放3个元素
arr[0] = 2;//[0]代表数组的第1个数据  将2存进去到数组第1个位置
arr[1] = 4;//[1]代表数组的第2个数据    将4存进去到数组第2个位置
arr[2] = 6;//[2]代表数组的第3个数据  将6存进去到数组第3个位置


声明和初始化都会了,那怎么访问呢?
我们访问数组一般都是通过下标(索引)来查找的
我们看个例子

int[] arr = {3,6,9,12,15};
//我们用下标来找12,12的下标是多少呢,我们数组的下标都是自动从0开始的编号,
//所以12的下标为3  我们输出看看对不对
int res = arr[3];//这里用了一个变量接收了一下  是可以直接输出的
System.out.println(res);//输出12 
长度怎么求?

//怎么知道数组的长度是多少,我们这里有一个长度属性length
//使用 数组名.length就可以了 数组最大下标为 数组名.length-1
int[] arr = {21,33,44,55,66,77};
int len = arr.length;
System.out.println(len);//结果为6 正是数组的长度

如何遍历数组?
我们之前学过循环了,现在用它来遍历数组

int[] arr = {12,34,65,76,89,99};
for(int i=0;i<arr.length;i++){
//数组的下标从0开始的我们将i设为0,arr.length数组的长度
    System.out.println(arr[i]);//正确输出
}

怎么获取数组中最大的值?
思路:
先定义一个变量保存数组索引为0的元素,然后再使用循环遍历数组,在循环中将遍历到的元素和先前定义的变量比大小,如果大于变量,那就将变量替换为当前元素,直到循环结束,就可以找出最大值了

public static void main(String[] args) {
        int[] arr = {3,5,6,8,9,7};
        int max = arr[0];//定义变量,将数组下标为0的元素存入
        for(int i=1;i<arr.length;i++){//因为下标为0的元素存入到变量中了,所以从下标1开始循环
            if(max < arr[i]){//判断当前遍历到的元素是否大于变量max
                max = arr[i];//如果大于变量max ,那就将当前遍历到的元素替换掉变量原先的值
            }//如果不大于,继续循环
        }
        System.out.println(max);//最后输出结果  结果为:9
    }
//最大值会求了  那最小值也同样的道理,还有求数组的总和都是一样的思路,童鞋们自己去试一下


下面我们看一下经典的冒泡排序
什么是冒泡排序?
就是使用循环将数组中的元素按从大到小或从小到大排序好
思路:
这里需要使用到两个for循环,外边的循环每循环一次就可以找到一个最大值
里边的循环每循环一次就产生一次对比,在内层循环中在判断前一个元素是否比后一个元素小,是的话互换位置,最后输出

public static void main(String[] args) {
    int[] arr = {3,11,6,20,9,7};
    //外层循环每循环一次确定一个最大的元素
    for(int i=0;i<arr.length;i++){
        //内层循环每循环一次产生一次对比
        for(int j=0;j<arr.length-1;j++){
            //将当前的元素与后一个元素比较
            if(arr[j]<arr[j+1]){
                //如果当前元素小于后一个元素  互换位置
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    //最后循环输出  从大到小排序
    for(int i=0;i<arr.length;i++){
        System.out.print(arr[i]+"\t");
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

光莫不甘娜哪行

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

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

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

打赏作者

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

抵扣说明:

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

余额充值