数组的学习

简介: 数组的学习

数组来由

录入30个学生的成绩cj01 ... cj30。成本非常高,因为你使用了30个变量。维护起来非常麻烦
使用数组,只需要使用一个变量来维护它了

数组的使用

public class Demo01 {
    public static void main(String[] args) { // java Demo01 zs ls ww
        // 声明一个数组,指明了里面只能存放 整数
        int arr[];
        // 赋值
        arr = new int[5];
        // 给数组里面的5个成员,都分别给个成绩
        // arr[0] arr[1] arr[2] arr[3] arr[4]
        arr[0] = 60;
        arr[1] = 61;
        arr[2] = 62;
        arr[3] = 63;
        arr[4] = 64;
        // 使用
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        System.out.println(arr[3]);
        System.out.println(arr[4]);
    }
}

数组的内存图

变量声明和args参数说明

声明分配空间值的省略写法

public class Demo02 {
    public static void main(String[] args) {
        // 声明 分配空间 赋值
        int[] arr = new int[]{81,82,83,84,85};
        int[] arr2 = {81,82,83,84,85}; // 如果 声明 分配空间 赋值 是在一行,省略new int[]
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        System.out.println(arr[3]);
        System.out.println(arr[4]);
    }
}

数组的length属性

public class Demo03 {
    public static void main(String[] args) {
        System.out.println(args.length); // 0
        // java的数组,天然有一个只读属性,它的名字叫length
        int[] arr = {81,82,83,84,85,86,87,88};
        System.out.println(arr.length);
        System.out.println("数组里面的信息:");
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

数列输出求和判断

import java.util.Scanner;
public class Demo04 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] arr = {8, 4, 2, 1, 23, 344, 12};
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i]; // 累计
            System.out.println(arr[i]); // 输出
        }
        System.out.println("和:" + sum);
        System.out.print("输入一个数:");
        int number = scanner.nextInt();
        boolean bFound = false;
        for (int i = 0; i < arr.length; i++) {
            if (number == arr[i]) {
                bFound = true;
                break;
            }
        }
        System.out.println(bFound ? "找到" : "没有找到"); // 唯一的三元操作符
    }
}

购物金额结算

import java.util.Scanner;
public class Demo05 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double[] arrJingE = new double[5];
        for (int i = 0; i < arrJingE.length; i++) {
            System.out.print("请输入第"+(i+1)+"笔的金额:");
            arrJingE[i] = scanner.nextDouble();
        }
        System.out.println("序号\t金额");
        double sum = 0.0;
        for (int i = 0; i < arrJingE.length; i++) {
            System.out.println((i+1) + "\t" + arrJingE[i]);
            sum += arrJingE[i];
        }
        System.out.println("总金额\t" + sum);
    }
}

Arrays的sort和toString方法

import java.util.Arrays;
public class Demo06 {
    public static void main(String[] args) {
        int[] arr = {8, 4, 2, 1, 23, 344, 12};
//        for (int i = 0; i < arr.length; i++) {
//            System.out.println(arr[i]);
//        }
        Arrays.sort(arr); // 排序
        System.out.println(arr); // 打印数组名时,输出的是 [代表数组 I代表整数 @8位十六进制代表内存地址
        System.out.println(Arrays.toString(arr));
    }
}

Arrays的equals和fill和copyOf和binarySearch方法

import java.util.Arrays;
/*
boolean equals(array1,array2) 比较array1和array2两个数组是否相等
void fill(array,val)          把数组array所有元素都赋值为val
copyOf(array,length)          把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致
int binarySearch(array, val)  查询元素值val在数组array中的下标(要求数组中元素已经按升序排列)
 */
public class Demo07 {
    public static void main(String[] args) {
        int[] arr1 = new int[]{8, 4, 2, 1, 23, 344, 12};
        int[] arr2 = new int[]{8, 4, 2, 1, 23, 344, 12};
        System.out.println(Arrays.equals(arr1, arr2));
        Arrays.fill(arr1, 11);
        System.out.println(Arrays.toString(arr1));
        int[] arr3 = Arrays.copyOf(arr2, 8);
        System.out.println(Arrays.toString(arr3));
        Arrays.sort(arr2); // [1, 2, 4, 8, 12, 23, 344]
        System.out.println(Arrays.toString(arr2));
        int pos = Arrays.binarySearch(arr2, 0); // 没有找到,返回插入点的下标取负数再-1
        System.out.println("pos: " + pos);
    }
}

字符数组顺序和逆序输出

import java.util.Arrays;
public class Demo08 {
    public static void main(String[] args) {
        char[] arr = {'a', 'c', 'u', 'b', 'e', 'p', 'f', 'z'};
        System.out.print("原字符序列:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        Arrays.sort(arr);
        System.out.println();
        System.out.print("升续排序后:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
        System.out.print("逆序输出后:");
        for (int i = arr.length - 1; i >= 0; i--) {
            System.out.print(arr[i] + " ");
        }
    }
}

相关文章
|
Ubuntu
百度搜索:蓝易云【Ubuntu系统apt添加第三方PPA源教程】
现在,你已经成功在Ubuntu系统中添加了第三方PPA源。系统将会从该源获取更新和软件包。请注意,添加第三方PPA源时要确保其来源可信,以免引入不安全的软件包。
494 5
|
编译器 C# 开发者
C# 10.0中的全局`using`指令:简化命名空间引用的新方式
【1月更文挑战第4天】本文介绍了C# 10.0中引入的全局`using`指令,该指令允许开发者在项目级别统一管理命名空间引用,从而消除源文件中重复的`using`语句。全局`using`指令通过减少冗余代码、提高可维护性和统一命名空间管理,为开发者带来了更高效的编码体验。文章详细解释了如何实现全局`using`指令,并探讨了其在实际项目中的优势和适用场景。
|
SQL JSON Java
两年了,ambari终于发布了2.7.6新版本
2021/11/16,ambari终于推出了2.7.6版本,该版本相对2.7.5版本以来,共有26个contributors提交了114个commits以及修改了557个文件。
|
安全 Java 程序员
深入理解Java内存模型与并发编程####
本文旨在探讨Java内存模型(JMM)的复杂性及其对并发编程的影响,不同于传统的摘要形式,本文将以一个实际案例为引子,逐步揭示JMM的核心概念,包括原子性、可见性、有序性,以及这些特性在多线程环境下的具体表现。通过对比分析不同并发工具类的应用,如synchronized、volatile关键字、Lock接口及其实现等,本文将展示如何在实践中有效利用JMM来设计高效且安全的并发程序。最后,还将简要介绍Java 8及更高版本中引入的新特性,如StampedLock,以及它们如何进一步优化多线程编程模型。 ####
173 0
|
机器学习/深度学习 存储 PyTorch
PyTorch自定义学习率调度器实现指南
本文将详细介绍如何通过扩展PyTorch的 ``` LRScheduler ``` 类来实现一个具有预热阶段的余弦衰减调度器。我们将分五个关键步骤来完成这个过程。
756 2
String、StringBuffer、StringBuilder的区别
这篇文章讨论了Java中String、StringBuffer和StringBuilder的区别。String是不可变的,每次操作都会产生新的对象,效率低且浪费内存。StringBuilder可以在原字符串基础上进行操作,不开辟额外内存,弥补了String的缺陷。StringBuffer和StringBuilder类似,但StringBuffer的方法是线程安全的。文章还列举了StringBuffer的常用方法,并提供了使用示例代码。最后总结了这三者的主要区别。
String、StringBuffer、StringBuilder的区别
|
消息中间件 设计模式 Java
Java技术栈梳理
Java技术栈梳理
|
存储 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
449 4
|
机器学习/深度学习 人工智能 自然语言处理
深入探讨Python在人工智能领域的应用
本文旨在全面探讨Python语言在当前人工智能(AI)领域的广泛应用及其背后的原因。Python,作为一种高级编程语言,以其简洁的语法、强大的库支持以及广泛的社区资源,在人工智能、机器学习、深度学习等领域占据了举足轻重的地位。文章将从Python语言的特性入手,分析其在AI领域内的优势,进而深入讨论Python在不同AI子领域,如自然语言处理(NLP)、计算机视觉(CV)、数据分析等方面的应用实例,最后探讨Python未来在AI领域的发展趋势与挑战。
|
API 异构计算
4.3.2 图像分类ResNet实战:眼疾识别——模型构建
这篇文章介绍了如何使用飞桨框架中的ResNet50模型进行眼疾识别的实战,通过5个epoch的训练,在验证集上达到了约96%的准确率,并提供了模型构建、训练、评估和预测的详细代码实现。

热门文章

最新文章