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

目录

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 + " ");
        }
    }
}

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

月月崽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值