欢迎光临散文网 会员登陆 & 注册

150天打卡day08_数组

2021-03-25 17:04 作者:关阿姨的Java日记  | 我要投稿

今日内容

  • 数组的定义

  • 数组的访问

  • 数组的复制

  • 数组的排序

1. 什么是数组

程序都是由数据结构和算法组成,数组就是一种最简单的数据结构,是具有 相同数据类型的一组数据 的集合。

if结构、循环,解决的都是算法问题。那什么是算法?所谓算法就是流程,像取钱怎么取?插卡,输入密码,输入要取钱的金额,确定。那这个过程,第一步怎么做,第二步怎么做,判断还是循环,解决问题的步骤 这就是算法

解决问题(算法)需要选择正确的数据结构。

所谓数据结构,简单的说就是把数据按照特定的某种结构来保存,每种数据结构都具有自己的特点,设计合理的数据结构是解决问题的前提条件。数组,就是最基本的、用得最多的一种数据结构。

试想下,存储一个学员的成绩,可以声明一个整型变量score来存储。

假如用程序保存班级30人的Java考试成绩?

一百个人?一千个人?甚至更多?声明太多的变量,显然很繁琐,并且不适合整体的操作。像这种情况,可以使用数组这种数据结构来解决。

数组为相同数据类型的元素组成的集合,数组元素按线性顺序排列

所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素(“一个跟一个”),可以通过元素所在位置的顺序号(下标)做标识访问每一个元素(下标从0开始,最大到元素个数-1)。

数组的特点

1、数组是相同数据类型的元素组成的集合,也是用来存储数据的

例如:

球类数组 [足球,篮球,兵乓球...]

电器类数组 [电视机,电冰箱,电脑...]

2、数组元素都是按线性顺序排列 除了第一个元素外,每一个元素都有唯一的前驱元素或者除最后一个元素外,每一个元素都有唯一的后继元素(一个跟一个)

Java的数组也分为两大类型

  • 基本类型数组

  • 引用类型数组

基本类型数组

声明数组的语法:数据类型 [] 数组名 = new 数据类型[大小];

例如:声明一个int类型的arr数组,里面存放10个元素

int[]为数组类型,表示数组中的每一个元素为int类型;数组也是在内存中用于存储数据的,并且是存储一组数据,同样需要一个对它的引用,该引用即为arr,arr称为数组类型变量(引用);new为特定的声明数组的关键字。数组的声明必须要有元素个数,10即为数组中元素的个数,也称为数组长度。总结下来,定义基本类型数组的要点包括:

1)      确切的数据类型:用于开辟空间大小

2)      整体的数组名字:用于对数据的引用

3)      不能缺少的“[  ] ”

注意在定义数组时使用的new关键字,正是因为new语句,才使得数组分配到了指定大小的空间

声明数组的两种方式

1、数据类型 [] 数组名

2、数据类型 数组名 []

数组的初始化

Java语言中数组必须先初始化,然后才可以使用,所谓的初始化,就是为数组中的数组元素分配内存空间,并为每个数组元素赋初始值。

  1. 数组的初始化有两种方式:

    1. 动态初始化:初始化时程序员只需要指定数组长度,由系统为数组元素分配空间

    2. 静态初始化:初始化时由程序员显示的指定每个数组元素的初始值,由系统决定数组长度

动态初始化

基本类型(数据元素为基本类型)的数组创建后,默认为其数组元素设置了初始值

  • byte、short、char、int、long为0

  • float和double为0.0

  • boolean为false

例如:声明一个名为arr,长度为5的整数类型数组

new关键字在内存中开辟了一块长度为5的空间,其中系统为数组中的每一个值都设置了默认的初始值为0(相当于是声明一个名为arr的数组,里面存储了5个元素,其中每个元素的值都默认为0)。

静态初始化

可以在数组声明的同时对数组的元素进行初始化,这时可以省略new运算符

例如

手动为数组中的每个元素都赋了初始值,元素的个数即为数组的长度

初始化变量也可以先声明后初始化,但是如下以下写法只能用于声明时的初始化,不能用于赋值,否则会有编译错误。

练习

将这5个学生的成绩100,80,90,99,95存储在一个数组里

定义一个长度为5的数组,并手动为每个元素赋初始值

注意

  1. 不管采用哪种方式初始化数组,一旦初始化完成,数组的长度就不可改变。

  2. Java允许通过数组的length属性来访问数组的长度。

数组的访问

数组中最常用的用法就是访问数组元素,包括对数组元素进行赋值和取出数组元素的值,

  • 通过下标访问数组元素

    访问数组元素都是通过在数组引用变量后紧跟一个方括号[],方括号中是数组元素的索引值,这样就可以访问数组元素了,访问到数组元素后,就可以把一个数组元素当成一个普通变量使用,包括为该变量赋值和取值该变量的值,这个变量的类型就是定义数组时使用的是类型

注意:Java语言的数组索引是从0开始的,也就是说,第一个数组元素的索引值是0,最后一个数组元素的索引值为数组长度-1,

通过下标访问的时候下标从 0 开始,最大到 length-1

如果访问数组元素时指定的索引值小于0,或者大于等于数组的长度,编译程序时不会出现任何错误,但是运行时会报数组下标越界异常。

获取数组的长度

所有 的数组都提供了一个length属性,通过length属性可以访问到数组的长度,一旦获得了数组的长度,就可以通过循环来遍历该数组的每个数组元素。

通过调用数组的length属性可以获取到数组的长度。

定义引用类型数组

使用引用类型声明的数组都是引用类型数组,引用类型数组的每个元素是一个引用类型变量,使用引用类型数组的目的是管理一组对象。

二维数组

定义

数组的数组:二维数组的每一个元素是一个一维数组

定义三行四列数组

3种定义格式

1、数据类型[][] 数组名 = new 数据类型[二维数组的长度][每个一维数组的长度];

arr[0]---下标为0的位置上的一维数组

arr[1][3]---如果要获取具体的元素需要两个下标

2、数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][];

3、数据类型[][] 数组名 = {{元素},{元素1, 元素2},……};

注意:[]在变量名前的时候,是紧跟数据类型的;如果[]在后,则是属于当前变量名。

二维数组的应用

二维数组的长度:数组名.length ---每个一维数组:数组名[下标].length

二维数组的遍历---两重for循环

二维数组的反转---头尾交换

从控制台输入行数,打印对应的杨辉三角


欢迎👏点赞+关注,学习编程不迷路,笔芯❤~


150天打卡day08_数组的评论 (共 条)

分享到微博请遵守国家法律