今日内容
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语言中数组必须先初始化,然后才可以使用,所谓的初始化,就是为数组中的数组元素分配内存空间,并为每个数组元素赋初始值。
数组的初始化有两种方式:
动态初始化:初始化时程序员只需要指定数组长度,由系统为数组元素分配空间
静态初始化:初始化时由程序员显示的指定每个数组元素的初始值,由系统决定数组长度
动态初始化
基本类型(数据元素为基本类型)的数组创建后,默认为其数组元素设置了初始值
例如:声明一个名为arr,长度为5的整数类型数组

new关键字在内存中开辟了一块长度为5的空间,其中系统为数组中的每一个值都设置了默认的初始值为0(相当于是声明一个名为arr的数组,里面存储了5个元素,其中每个元素的值都默认为0)。
静态初始化
可以在数组声明的同时对数组的元素进行初始化,这时可以省略new运算符
例如

手动为数组中的每个元素都赋了初始值,元素的个数即为数组的长度
初始化变量也可以先声明后初始化,但是如下以下写法只能用于声明时的初始化,不能用于赋值,否则会有编译错误。
练习
将这5个学生的成绩100,80,90,99,95存储在一个数组里
定义一个长度为5的数组,并手动为每个元素赋初始值
注意:
不管采用哪种方式初始化数组,一旦初始化完成,数组的长度就不可改变。
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循环
二维数组的反转---头尾交换
从控制台输入行数,打印对应的杨辉三角
欢迎👏点赞+关注,学习编程不迷路,笔芯❤~

标签: