Java基础08:数组

数组概述

在这里插入图片描述

数组声明创建

在这里插入图片描述

  1. 举例来说,通过在变量类型之后加上[]来声明由该类型组成的数组。如由int组成的数组由以下表达式声明:
int[] nums;//首选方法
int nums[]; //效果相同,但不是首选方法,主要是为了让C/C++程序员快速掌握java
int[] nums=new int[10];//创建一个大小为10的int数,下标为0-9
组

内存分析

在这里插入图片描述
举例来说,下图中右边部分的代码对应的内存操作为:

  1. 声明数组的时候,首先会在栈里压入一个array,由于其是一个引用对象的变量,所以其空间存放的是这个引用在堆里面的具体地址。
  2. 创建数组的时候会在堆里创建一个大小为10的堆空间。
  3. 然后根据下标即数组的索引位置给内存中的每个空间赋值。

注意:当去访问超过数组长度的位置时,如:array的长度为10,下标范围为0-9,当去访问array[10]时,会报错:java.lang.ArrayIndexOutOfBoundsException,即数组下标越界。

在这里插入图片描述

三种初始化

在这里插入图片描述

数组的四个基本特点

在这里插入图片描述
在这里插入图片描述

数组使用

在这里插入图片描述

以下为普通的for循环中数组的使用示范,分别实现了以下功能

  • 打印数组中所有元素
  • 计算数组中所有元素的和
  • 查找数组中的最大元素
public class Demo02 {
    public static void main(String[] args) {
        int[] arrays={1,2,3,4,5};
        //打印所有元素
        for (int i = 0; i < arrays.length; i++) {//可被替换为增强for,for(int i:arrays)
            System.out.println(arrays[i]);
        }
        System.out.println("==============");
        //计算所有元素的和
        int sum=0;
        for (int i = 0; i < arrays.length; i++) {
            sum+=arrays[i];
        }
        System.out.println(sum);
        System.out.println("===============");
        //查找最大元素

        int max=arrays[0];
        for (int i = 0; i < arrays.length; i++) {//可被替换为增强for,for(int i:arrays)
            if(arrays[i]>max){
                max=arrays[i];
            }
        }
        System.out.println(max);

        
    }

输出结果:
在这里插入图片描述

多维数组

在这里插入图片描述
多维数组的声明:

int[][] array={{1,2,3},{2,3,4},{3,4,5}}

Arrays类

在这里插入图片描述
应用示例(可通过按住Ctrl,用鼠标点方法和类查看源码)

public class Demo03 {
    public static void main(String[] args) {
        int[] a={1,2,3,4,9090,34234,4534,2321,2,34};
        System.out.println(a);//[I@b4c966a
        //打印数组元素 Arrays.toString
        System.out.println(Arrays.toString(a));
        //对数组进行排序
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        //对数组进行填充
        Arrays.fill(a,2,4,0);//范围是左闭右开 [2,4)
        System.out.println(Arrays.toString(a));
    }

输出结果
在这里插入图片描述

拓展

排序算法

  • 冒泡算法

在这里插入图片描述

public class Demo04 {
    public static void main(String[] args) {
        //冒泡排序
        int[] list={34,54,4,343,534134,53,43,5};
        for (int i = 0; i < list.length; i++) {


            for (int j=i+1;j < list.length;j++) {

                if(list[i]>list[j]){
                    int big=list[i];
                    int small=list[j];
                    list[i]=small;
                    list[j]=big;

                }

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

输出:
在这里插入图片描述
把小的数看成泡泡,每一次迭代都有一个小的数字往前冒,所以叫冒泡排序。

稀疏数组

在这里插入图片描述
在这里插入图片描述
右边的稀疏数组中,0行代表的意思是,整个数组的尺寸为6行8列,一共有值的数字一共有8个。下面1-8行分别记录了这8个数的坐标和值。

  • 19
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值