Java基础——说说数组

java基础系列文章之回顾数组



前言

今天在看书的时候,突然想起Java中的数组,记忆中其实很模糊,就花了半个小时去了解回顾一下,临感而发。
我们在去学一个东西的时候,首先会对新的的东西很陌生,对于Java中数组来说,先去理解数据是什么,它的优点是有哪些,适于在什么地方去使用,其次我们怎么去在Java中定义一个数组,数组在内存中又是怎么去存储取出并运行在程序中的,之后我们就要多加练习,代码多敲!


提示:以下是本篇文章正文内容,下面案例可供参考

数组是什么?(理解)

  • (Array)数组的基本概念:顾名思义就是一组数据。在Java中,数组也可以视为一种数据类型,它本身就是一种引用数据类型----(引用类型,类似于我们c/c++中的指针,而所谓指针,就是变量在内存当中的地址。任何变量只要存在于内存中,就需要有个唯一的编号去标识或者说指向这个变量在内存中的位置,而这个唯一的内存编号就是内存地址,就是所谓的指针)
  • 我们边看边想,为什么上述说数组也是一种引用的数据类型?在我们之前理解中引用的数据类型有:对象(new 出来的) ,String
  • 数组的定义:数组是一堆有序数据的集合,数组中的每个元素,必须是相同的数据类型,而且可以用一个统一的数据名和下标来一唯一的去欸的那个数组中的元素。

1.数组的使用

直接使用一个代码例子讲解:

public class ArrayTest01 {
    public static void main(String[] args) {
        //定义一个长度为12的数组,并使用12个月份的天数初始化
        /**
         * 定义数组一般两种形式:
         * 学过c和c++的应该都知道 1. int month[] = {31,28,31,30,31,30,31,31,30,31,30,31};
         * 但在java中我们一般都是
         * --使用”int[] month" 的形式 也就是 变量类型 变量名--
         */
        int[] month = {31,28,31,30,31,30,31,31,30,31,30,31};
        /**
         * i是起始变量指:下标(索引),数组中的下标是从0开始的
         * month.length 存储着month的长度
         */
        for(int i = 0;i < month.length;i++){
            System.out.println("第"+ (i+1) + "月有" + month[i] + "天");
        }
    }
}

在这里插入图片描述

注意如下:

1int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
2int[12] month = {31,28,31,30,31,30,31,31,30,31,30,31};

这两种声明方式是错误的,在定义数组的时候我们不能在方括号中写下数组的长度,这样是错误的,因为int[ ] 我们看作是一种数据类型(整性数组数据类型),而数据类型不能被数字打断。

2 .一维数组的声明和使用

  • 动态初始化基础语法的两个步骤:

  • 1.数组类型[ ] 数组名; //声明该数组

  • 2.数组名 = new 数组类型[内存个数] //分配内存给该数组

  • 3.简写格式: 数组类型[ ] 数组名 = new 数组类型[内存个数];

    案例分析:

public class ArrayTest02 {
    public static void main(String[] args) {
        //创建一个数组,并输出其默认值
        int a[] = new int[3];//开辟内存空间供整型数组a使用,其元素个数为3
        //输出结果:a数组长度 = 3
        System.out.println("a数组长度 = " + a.length);
        //输出结果:a[1]=0 a[2]=0 a[3]=0  int不赋值情况 默认为0
        for (int i = 0;i < a.length;i++){
            System.out.println("a["+i+"]="+a[i]);
        }
    }
}

在这里插入图片描述

3 .二维数组的声明和使用

  • 动态初始化基础语法的两个步骤:
  • 1.数组类型[ ][ ] 数组名; //声明该数组
  • 2.数组名 = new 数组类型[行的个数][列的个数] //分配内存给该数组
  • 3.简写格式: 数组类型[ ][ ] 数组名 = new 数组类型[行的个数][列的个数];
  • 例子: int[ ][ ] num = new num[2][4]; //就是两行四列
  • (注意列的个数声明时候可以省去,但列的个数不能,但最好是都准确声明)
  • 动态初始化一般都是使用new关键字
  • 静态初始化语法:
  • 数组类型[ ][ ] 数组名 = {{元素1,元素2…},{元素1,元素2…},{元素1,元素2…}…};
  • 例子:
    int[][] num = {
    {23,32,44,69},
    {43,45,78,90}
    };

案例分析:

public class ArrayTest03 {
    //采用静态初始化   赋值
    public static void main(String[] args) {
        //声明数组并设置初值
        int[][] num = {
                {23,32,44,69},
                {43,45,78}
        };
        System.out.println(num[0].length);//4
        System.out.println(num[1].length);//3
    }
}

想一想有一维数组,二维数组,那三维数组四维数组等这些在Java中都可以实现,要想了解的可以自行写一写。

下面写一个数组案例题

编写程序,对 int[] a = {25,24,12,76,98,101,90,28} 数组进行排序,排序算法有很多种,可以先使用冒泡法排序进行解决。
冒泡法具体详细不会的可以转到:这个博主讲解
https://blog.csdn.net/qq_42857603/article/details/81487759

/**
 * @author ys
 * @create 2021-05-04-21:21
 */
public class ArrayTest04 {

    public void sort(int[] n) {
        //第一个for循环表示第几次循环
        for(int i=1;i<n.length;i++) {
            //第二个for循环表示该次循环进行几次比较
            for(int j=0;j<n.length-i;j++) {
                //判断比较是否进行换位
                if(n[j]>n[j+1]) {
                    int temp = n[j];
                    n[j] = n[j+1];
                    n[j+1] = temp;
                }
            }
            print(n);
        }
    }
    public void print(int[] n) {
        for(int i=0;i<n.length;i++)
            //输出排完序的数组
            System.out.print(n[i] + "\t");
        System.out.println();
    }

    public static void main(String[] args) {
        ArrayTest04 s = new ArrayTest04();
        //此处为需要排序的数组
        int[] a = {25,24,12,76,98,101,90,28};
        s.sort(a);
        s.print(a);
    }
}



总结

欢迎指正!有兴趣的话推荐你们一本书籍《java从入门到精通》精粹版本,我们在学java同时一定一定要打好基础!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值