【Java入门】-- Java基础详解之 [数组、冒泡排序]

news2024/11/25 20:38:05

目录

1.为什么需要数组?

2.数组的介绍

3.数组的快速入门

4.数组的使用

5.动态初始化

6.静态初始化

7.数组的细节

8.数组的赋值机制

9.数组拷贝

10.数组反转

11.二维数组

12.冒泡排序


1.为什么需要数组?

有五个学生,他们英语成绩分别为60,70,90,80,50.用程序求几个同学总成绩是多少,平均分多少?

常规写法:定义五个变量,加起来就是总成绩,除以5就是平均成绩。这样定义很多变量是的程序非常繁琐。我们可以用数组来实现这个问题。

2.数组的介绍

数组可以存放多个同一类型的数据。数组也是一种数据类型,它是引用数据类型。

3.数组的快速入门

我们通过代码实现上面五个学生的问题:

public class Array01{
   public static void main(String[] args){
        //有五个学生,他们英语成绩分别为60,70,90,80,50用程序求几个同学总成绩是多少,平均分多少?
        //传统方式:
        double s1 = 60;
        double s2 = 70;
        double s3 = 90;
        double s4 = 80;
        double s5 = 50;
        double sum = s1 + s2 + s3 + s4 + s5;
        double avg = sum / 5;
        System.out.println("总成绩为:"+ sum + ", 平均成绩为:"+ avg); 

        //以上这种方式难免有些繁琐了,我们使用数组可以很简单的解决这个问题。
        //1.定义一个double类型的数组,把成绩存到数组中
        double[] arrays = {60,70,90,80,50};
        //2.数组是从0开始,所以下标为arrays[0]就是第一个数;第二个数就是arrays[1],以此类推...
        //3.通过for循环可以访问数组的5个元素值
        double sum2 = 0;
        for(int i = 0 ; i < arrays.length ; i++){
            sum2 += arrays[i];
        }
        System.out.println("总成绩为:"+ sum2 + ", 平均成绩为:"+ sum2/arrays.length); 
    }
}

4.数组的使用

  • 数组的定义:
    数据类型 数组名[] = new 数据类型[大小]  如:int a[] = new int[10] 
    创建了一个数组,名字为a,可以存放10个数,就是a[0]到a[9]。超过10个会报错!
    5d3bd9aa14084be1aac679ab60473914.png
  • 数组的引用
    数组名[下标/访问/数组元素] 你要使用a数组的数字3,那么就是a[2],数组下标从0开始

5.动态初始化

  • 声明数组:

语法:数据类型 数组名[] 或者  数据类型[]   数组名;例如:int[] a;

  • 创建数组:

语法:数组名 = new 数据类型[大小]   例如:a = new int[10];

6.静态初始化

  • 初始化数组:
    语法:数据类型 数组名[]  =  {元素1,元素2,... ,元素n};
    例如:int[] a = {11,22,33,44,55,66};

7.数组的细节

  • 数组是多个乡同类型数据的组合,实现对这些数据的统一管理。
  • 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型,但是不能混用。
  • 数组创建后若没有赋值,不同的数据类型都有默认值
    byte 0, short 0 , int 0 , long 0,float 0.0, double 0.0,char \u0000,boolean false,String null
  • 数组的使用步骤:1.声明数组开辟空间  2.数组赋值  3.使用
  • 数组下标都是从0开始
  • 数组下标必须在指定范围内,超过范围报错(数组下标越界异常)

8.数组的赋值机制

  1. 基本数据类型赋值,这个值就是具体的数据,互不影响
  2. 数组默认情况引用传递,赋的是地址。
    ab4fbf404e044c9cabbdd8d7ab2329d7.png

9.数组拷贝

将int[] arr1 = {11,22,33};拷贝到arr2数组中。

public static void main(String[] args){
    //将int[] arr1 = {11,22,33};拷贝到arr2数组
    int[] arr1 = {11,22,33};
    int[] arr2 = new int[arr1.length];
    //把arr1的所有元素赋到arr2中
    for(int i = 0 ; i < arr1.length ; i++){
        arr2[i] = arr1[i];
    }


    //输出arr2查看
    for(int i = 0 ; i < arr2.length ; i++){
        System.out.println(arr2[i]);
    }
}

10.数组反转

把数组中的数反转:arr{11,22,33,44,55,66,77}    arr{77,66,55,44,33,22,11}

逆序赋值的方式:

public class arr{
    public static void main(String[] args){
        int[] arr = {11,22,33,44,55,66,77};
        //创建一个空的且同等大小的数组
        int[] arr2 = new int[arr.length];
        //逆序遍历
        for(int i = arr.length-1,j = 0;i>=0;i--,j++{
            arr2[j] = arr[i];
        } 
    }
}

11.二维数组

  1. 动态初始化
    语法:类型[][] 数组名 = new 类型[大小][大小]  如:int a[][] = new int[3][3];

  2. 二维数组在内存的形式:

  3. 动态初始化
    类型 数组名[][] = new 类型[大小][大小];

  4. 静态初始化
    类型 数组名[][] = {{1,1},{2,2},{1,2}};

  5. 使用细节

    1. 二维数组的声明方式:int[][] a ,int[] a[] ,int a[][]

    2. 二维数组实际上是多个数组组成的

12.冒泡排序

思想:通过排序从后向前依次比较相邻元素的值,若发现逆序则交换,使值较大的往后移。像气泡一样逐渐向上浮。

举例说明:我们将五个无序的:33,22,55,11,44使用冒泡排序将其排成从小到大有序的数列

public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {33, 22, 55, 11, 44};
        int temp;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        System.out.println("从小到大排序后的数组为:");
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/651727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索不同学习率对训练精度和Loss的影响

验证精度、验证Loss的影响 1 问题 在探索mnist数据集过程中&#xff0c;学习率的不同&#xff0c;对我们的实验结果&#xff0c;各种参数数值的改变有何变化&#xff0c;有何不同。 学习率对精度和损失的影响研究。训练周期100学习率 [0.1, 0.01, 0.001, 0.0001](1) 不同学习率…

蓝牙网关Gateway_数据采集,连接控制,室内定位VDB2602

蓝牙网关&#xff0c;内部集成了WiFi、蓝牙、4G等多种无线通信方式&#xff0c;因此也继承了蓝牙、WiFi的有扫描功能、连接功能、数据透传功能&#xff0c;被应用于智能家居的各种场景中&#xff0c;例如&#xff1a;远程控制BLE装置&#xff0c;接收BLE设备发送的数据&#xf…

线程的创建和使用(一)

1、线程 1.1、线程的概念 一个线程就是一个 "执行流". 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 "同时" 执行着多份代码. 1.2、创建线程 方法一&#xff1a;继承Thread类 public class Exe_01 {public static void main(String[] args…

pandas与pyspark计算效率对比

日常工作中&#xff0c;主要还是应用HQL和SparkSQL&#xff0c;数据量大&#xff0c;分布式计算很快&#xff1b; 本地数据处理&#xff0c;一般会使用python的pandas包&#xff0c;api丰富&#xff0c;写法比较简单&#xff0c;但只能利用单核性能跑数&#xff0c;数据量大可…

【MySQL入门】-- 数据库简单的SELECT语句详解

目录 1.SQL分类 2.注释 3.数据导入指令 4.基本的SELECT语句 5.列的别名 6.去重复行 7.显示表结构 8.一些数据库基本操作 1.SQL分类 SQL语言在功能上主要分为三大类&#xff1a; DDL(Data Defintion Language)数据定义语言&#xff1a;定义不同的数据库&#xff0c;表…

【C#】并行编程实战:任务并行性(中)

本章继续介绍任务并行性&#xff0c;因篇幅所限&#xff0c;本章为中篇。 4、取消任务 .NET Framework 提供了以下两个类来支持任务取消&#xff1a; CancellationTokenSource &#xff1a;此类负责创建取消令牌&#xff0c;并将取消请求传递给通过源创建的所有令牌。 Cancell…

关于xinput1_3.dll丢失的详细解决方法

xinput1_3.dll是电脑文件中的dll文件&#xff08;动态链接库文件&#xff09;。如果计算机中丢失了某个dll文件&#xff0c;可能会导致某些软件和游戏等程序无法正常启动运行&#xff0c;并且导致电脑系统弹窗报错。 在我们打开软件或者游戏的时候&#xff0c;电脑提示xinput1_…

8、共享模型之工具

目录 8.1 线程池2、ThreadPoolExecutor&#xff08;及其重要&#xff09;1) 线程池状态2) 构造方法3) newFixedThreadPool4) newCachedThreadPool5) newSingleThreadExecutor6) 提交任务7) 关闭线程池8) 任务调度线程池 8.1 线程池 2、ThreadPoolExecutor&#xff08;及其重要…

中国电子学会2023年05月份青少年软件编程Python等级考试试卷六级真题(含答案)

2023-05 Python六级真题 分数&#xff1a;100 题数&#xff1a;38 测试时长&#xff1a;60min 一、单选题(共25题&#xff0c;共50分) 1. 明明每天坚持背英语单词&#xff0c;他建立了英语单词错题本文件“mistakes.txt”&#xff0c;将每天记错的单词增加到该文件中&…

DuiLib的编译和运行

文章目录 1、原生DuiLib的编译和运行1.1、下载并解压成这个样子1.2、打开.sln解决方案文件1.3、编译成功 2、网易DuiLib编译和运行2.1、下载并解压成这个样子2.2、打开.sln解决方案文件2.3、编译成功 3、腾讯DuiLib编译和运行vs 20173.1、下载并解压成这个样子3.2、打开.sln解决…

使用 Node.js、K8s 和分布式 SQL 构建世界上最具弹性的待办事项列表应用程序

本文演示了如何使用 Kubernetes (K8s) 和分布式 SQL 构建云原生 Node.js 应用程序。 开发可扩展且可靠的应用程序是一项热爱的工作。一个云原生系统可能包括单元测试、集成测试、构建测试&#xff0c;以及用于构建和部署应用程序的完整管道&#xff0c;只需单击一个按钮即可。 …

【计算机网络】第二章应用层-电子科技大学2023期末考试

第二章 应用层 应用层协议原理 网络应用程序体系结构 客户机/服务器体系结构&#xff1a;至少有一个服务器&#xff0c;一个客户机&#xff0c;其中服务器总是打开的&#xff0c;具有固定的众所周知的IP地址&#xff0c;主机群集常被用于创建强大的虚拟服务器&#xff0c;而客…

【Trino实战】Trino下ORC与Parquet查询性能分析

Trino下ORC与Parquet查询性能分析 环境 OS&#xff1a;CentOS 6.5 JDK&#xff1a;1.8 内存&#xff1a;256G 磁盘&#xff1a;HDD CPU&#xff1a;Dual 8-core Intel Xeon CPU (32 Hyper-Threads) E5-2630 v3 2.40GHz HDFS&#xff1a;2.9.2 Hive&#xff1a;2.3.9 T…

[n00bzCTF 2023] CPR 全

Crypto AES 给了java的加密原码&#xff0c;AES加密&#xff0c;有key import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.SecretKeySpec; import java.n…

arima模型原理及实战

目录 1&#xff0c;概念 2&#xff0c;数学知识 3&#xff0c;前提条件 4&#xff0c;序列不平稳时的平稳性方法 5&#xff0c;模型定阶&#xff0c;确定P和Q 6&#xff0c;模型训练与检验 1&#xff0c;概念 ARIMA模型&#xff08;英语&#xff1a;Autoregressive Integr…

grep及文本处理命令

正则表达式 一.基础命令 1.grep命令 对文本的内容进行过滤&#xff0c;针对行处理 1.1grep格式 grep [选项]…查找条件 目标文件 1.2grep命令选项 -m数字——————匹配几次后停止eg&#xff1a;grep -m 1 root /etc/passwd————————————多个匹配只取 -v …

【编程语言 · C语言 · 递归函数】

递归函数 C 语言的函数都支持递归, 也就是说&#xff0c;每个函数都可以直接或者间接第调用自己。所谓的间接调用&#xff0c;是指在递归函数调用的下层函数中再调用自己。 递归关系图如下&#xff1a; 递归之所以能实现&#xff0c;是因为函数的每个执行过程在栈中都有自己的…

深入理解 SpringBoot 日志框架:从入门到高级应用——(三)Logback 输出日志到 MySQL 数据库

文章目录 添加依赖导入 SQL 文件配置 logback-spring.xml运行结果 Logback 是一个开源的日志框架&#xff0c;它支持多种日志输出方式&#xff0c;包括控制台输出、文件输出、邮件输出等。如果要将 Logback 输出的日志保存到 MySQL 数据库中&#xff0c;可以按照以下步骤进行配…

Tapd在研发团队中的使用技巧-持续更新ing

1.TAPD第三方服务集成能力&#xff0c;支持与代码仓库、流水线进行了深度打通&#xff0c;力求为开发团队提供流畅高效的使用体验。我们梳理了一份攻略&#xff0c;掌握下面几个小技能&#xff0c;让TAPD与代码仓库、流水线一起&#xff0c;成为研发团队的得力助手&#xff0c;…

数据结构算法刷题(27)回溯(子集型)

回溯思想&#xff1a; 思路&#xff1a;这种出现全部xx组合的&#xff0c;基本都是回溯算法。首先&#xff0c;当digits是空&#xff0c;那返回也是空。当回溯到边界条件的时候&#xff0c;就更新答案&#xff0c;在非边界条件的时候&#xff0c;循环该数值下的全部情况。 cla…