java数组

Java数组学习

1、初始化数组

1.1 静态初始化数组

静态初始化数组:在定义数组的时候直接给数组赋值

格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};

简化格式:数据类型[] 数组名 = {元素1,元素2,元素3…};

注意事项:什么类型的数组只能存放什么类型的数据。

        //格式 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3.......}
        int[] a = new int[]{1, 2, 3, 4, 5};
        double[] b = new double[]{11.1, 12.2, 13.3};

打印数组在内存中的位置各部分的含义:

[:代表是一个数组

I或者D:代表的是数组的数据类型,I是int类型的数组,D则是double类型的数组

4eec7777:代表在内存中的位置

image-20240123210602998

如何获取到数组的长度:数组名.length

数组遍历快捷键:数组名.length.fori

数组的遍历访问:

        //数组的遍历访问
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }

总结案例;

image-20240123212232134

        int sum = 0;
        int[] sales_volume = new int[]{16, 26, 36, 6, 100};
        for (int i = 0; i < sales_volume.length; i++) {
            sum = sum + sales_volume[i];
        }
        System.out.println("总销售额为:" + sum);

1.2 动态初始化数组

动态初始化数组:定义数组时先不存入具体的元素值,只确定数组存储的数据长度

格式:数据类型[] 数组名 = new 数据类型[长度]

注意事项:动态初始化数组和静态初始化数组不能够混用

int[] a = new int[5];
int[] a = new int[5]{1, 2, 3, 4, 5}; X这种写法错误

动态初始化数组元素默认值规则:

image-20240123214340233

总结案例:

image-20240123214532428

double sum = 0;
double avg = 0;
double[] scores = new double[6];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < scores.length; i++) {
    System.out.print("请输入第" + (i+1) + "个评委的评分:");
    double score = sc.nextDouble();
    scores[i] = score;
}
for (int i = 0; i < scores.length; i++) {
    sum = sum + scores[i];
}
avg = sum/ scores.length;
System.out.println("选手的平均分:" + avg);

2、数组在计算机中的执行原理

在函数执行前,会将内存分为三个部分,分别叫方法区,栈内存和堆内存。方法区主要是存放程序编译和class文件的,也就是所谓的main方法;栈内存主要是给main方法开辟空间,main方法里面所定义的变量,数组等等都在所开辟的空间中进行操作;堆内存主要是用来存放new出来的对象数据例如new 数组数据等等,在栈内存中定义的数组arr存放的是数组元素在堆内存中的地址[I@4c873330,通过栈内存中的地址信息来找到数组中的数据元素。

image-20240124095644692

3、数组专项案例

3.1 数组求最值

image-20240124101959044

        // 静态初始化数组
        int[] Face_Score = new int[]{15, 9000, 10000, 20000, 9500, -5};
        // 建议把数组中的第一个数字先设置为最大值
        int max = Face_Score[0];
        int min = Face_Score[0];
        for (int i = 1; i < Face_Score.length; i++) {
            if (max < Face_Score[i]) {
                max = Face_Score[i];
            }
            if (min > Face_Score[i]) {
                min = Face_Score[i];
            }
        }
        System.out.println("颜值最高为:"+max);
        System.out.println("颜值最低为:"+min);

3.2 数组反转

image-20240124103233891

         // 数组反转
        int[] arr = new int[]{10, 20, 30, 40, 50};
        System.out.println("反转前的数组为:");
        for (int i = 0; i< arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }
        System.out.println();
        int temp = 0;
        for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        System.out.println("反转后的数组为:");
        for (int i = 0; i< arr.length; i++) {
            System.out.print(arr[i] + "\t");
        }

3.3 随机排名

image-20240124104750677

        int[] job_nums = new int[5];
        Scanner sc = new Scanner(System.in);
        Random ran = new Random();
        for (int i = 0; i < job_nums.length; i++) {
            System.out.println("请输入第" + (i+1) + "名员工的工号:");
            int job_num = sc.nextInt();
            job_nums[i] = job_num;
        }
        for (int i = 0; i < 5; i++) {
            int serial = ran.nextInt(5) + 1;
            int temp = job_nums[serial];
            job_nums[serial] = job_nums[i];
            job_nums[i] = temp;
        }
        for (int i = 0; i < job_nums.length; i++) {
            System.out.print(job_nums[i] + "\t");
        }
        
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值