【无标题】

文章介绍了数组的基本概念,包括一维数组的声明与初始化,以及通过三种方式赋值。还详细讲解了数组的遍历方法,提供了Arrays工具类的使用示例,如打印数组和排序功能。此外,文章还涉及冒泡排序算法的实现,并给出了一些编程练习,如年龄和薪资的排序,以及动态添加新元素和寻找最高身高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 什么是数组

数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器
数组既可以存储基本数据类型,也可以存储引用数据类型
数组是一组相关数据的集合,一个数组实际上就是一连串的变量.

内存空间连续 同一种数据类型

2 数组的声明与使用

  1. 格式: 数据类型[] 数组名; 数组名其实就是一个变量名
    2 定位数组的位置: 数组名[索引] ,比如说第0个元素: 数组名[0]
    数据类型[] 数组名 = 初值
    int[] array = new int[5]

注意:[ ]中5就是数组array的长度
数组的长度一旦给定 就不能修改

其中数据类型代表: 数组中盛放数据的 数据类型
数组使用下标(角标)来访问元素(保存元素) 下标从0开始
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

int[] array = {1,2,3,4};
int[] array = new int[5];
赋值
在这里插入图片描述

3 数组的使用

有三种使用方式
//第一种: 一般情况下,当我们不知道数据里面有什么内容的时候,我们会先声明一个数组,然后再去赋值

 int[] array = new int[5];

        array[0] = 1;
        array[1] = 3;
        array[2] = 5;
        array[3] = 6;
        array[4] = 7;

// 第二种

int[] array2 = new int[]{1,3,5,7,9};

// 第三种, 虽然我们没有明确的指定数组的长度,但是一旦声明了以后,长度就固定了

int[] array3 = {1,3,5,7,9};
//        array3[5] = 10;

数组的长度 数组名.length
数组的索引 从0开始,最大的索引: 数组名.length-1
指定索引位置数组的元素:
查询:数组名[索引]
修改:数组名[索引] = 数值;

4 数组的遍历

for(int i=0;i<数组名.length;i++){
System.out.println(数组名[索引] )
}

5 数组的工具类

Arrays.toString(数组名) 如果直接打印数组名得到的是一个内存地址,我们看不懂。 就是将数
组以字符串的方式打印出来。
Arrays.copyOf(数组名,复制的长度) 得到一个新的数组
Arrays.sort(数组名) 在原来的数组上进行排序

6 冒泡排序

是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。 走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

很简单,上面的代码,执行一次是移动一位,那我只要让他循环移动所有位置的元素就可以了

int num = 0;
   for (int i = 0; i < age.length - 1; i++) {
       for (int j = 0; j <age.length - 1 - i ; j++) {
            if (age[j] > age[j+1]){
               num = age[j+1];
               age[j+1] = age[j];
               age[j] = num;
           }
       }
   }

7 习题

经理要统计全公司的年龄并且以升序的形式打 印出来
经理要统计全公司的薪资并且以降序的形式打印出来
得出预计结果后尝试优化和调整代码编写方式

public static void main(String[] args) {
        int[] ages = {26,24,29,35,33,34,37};
        double[] salary = {5000,6000,3500,4000,8000,7000,9000};
        for (int i = 0 ; i < ages.length-1; i++){
            for (int o = 0 ; o < ages.length-1-i; o++){
                if(ages[o]>ages[o+1]){
                    int temp = ages[o];
                    ages[o] = ages[o + 1];
                    ages[o + 1] = temp;

                }
            }
        }
        for (int p = 0 ; p<salary.length-1;p++){
            for (int x = 0 ; x< salary.length-1-p;x++){
                if(salary[x]>salary[x+1]){
                    double temp = salary[x];
                    salary[x] = salary[x + 1];
                    salary[x + 1] = temp;

                }
            }
        }
        System.out.println(Arrays.toString(ages));
        System.out.println(Arrays.toString(salary));


    }


今天公司招了一位开发。需求:加入新员工的年龄,并保持升序
得出预计结果后尝试优化和调整代码编写方式

 public static void main(String[] args) {
        int [ ] ages = {36,25,34,29,38,27};
        int[] ints = Arrays.copyOf(ages, ages.length + 1);
        System.out.println(Arrays.toString(ints));
        Scanner scanner = new Scanner(System.in);

        ints[ints.length-1] = scanner.nextInt();
        System.out.println(Arrays.toString(ints));
        for (int i =0;i<ints.length-1;i++){
            for (int u=0;u<ints.length-1-i;u++){
                if(ints[u]>ints[u+1]){
                    int temp = ints[u];
                    ints[u] = ints[u + 1];
                    ints[u + 1] = temp;
                }
            }

            System.out.println(Arrays.toString(ints));
        }
    }

找出随机输入的5人身高中最高的
得出预计结果后尝试优化和调整代码编写方式

 public static void main(String[] args) {
       int[] hight = new int[5];
       int min = hight[0];
       Scanner scanner = new Scanner(System.in);
       for (int i=0;i<hight.length;i++){
           System.out.println("请输入第"+(i+1)+"个身高");
           hight[i]= scanner.nextInt();

       }

       for (int o=0;o<hight.length;o++){
           if (min<hight[o]){
               min = hight[o];
               System.out.println(min);
               System.out.println(Arrays.toString(hight));

           }
       }
   }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值