JAVA入门.零基础学Java语言 MOOC 第5周 数组(数据结构)

时间:2023-01-28 18:45:51

数据可以存放在变量里,每一个变量有一个名字,有一个类型,还有它的生存空间。

如果我们需要保存一些相同类型、相似含义、相同生存空间的数据,我们可以用数组来保存这些数据,而不是用很多个独立的变量。

数组是长度固定的数据结构,用来存放指定的类型的数据。一个数组里可以有很多个数据,所有的数据的类型都是相同的。



第5周 数组


5.1 数组
5.2 数组计算
5.3 二维数组


5.1 数组


初试数组

计算平均数程序的功能拓展:输出比平均数大的数和个数。记录数据。

数组声明【定义】及初始化:int [ ]   number  =  new int  [ 数组数量 ];

数组赋值:number [ i 数组位置变量]  =   赋值变量 ; 遍历数组【根据数组下标】     

数组元素使用:   =    number  [  ] 

遍历数组【根据数组下标】



创建数组

数组是一种容器【容器:放东西的东西】

特点:所有的元素都有相同的类型,一旦创建不能改变大小

定义数组变量:

 类型  [  ]   < 名字 > = new  类型   [  元素个数  ] ;

每个元素是一个变量



数组的元素

每个数组元素都类型相同,索引(或下标)是从零开始的,通索引(或下标)访问数组元素数据(内容);

数组下标范围:最小是零,最大是元素个数-1,下标不会检查有效性,元素个数可以是变量;


数组内部成员:length告诉它的元素数量

程序的可拓展性



数组变量

直接初始化数组:例:int [  ]   scores =  {  87,99,23,.......};  直接用大括号给数组所有元素初始值,不用给出数组大小,scores.length得出数组元素多少。

可拓展性强的代码,模块。

数组变量赋值


数组变量是数据的管理者:数组变量里面没有数据(是地址,指针指向的数组内容的地址),不是所有者,数组本身。【两个数组做“=”,即使其管理相同的数组地址】。

数组变量管理着数组。数组由数组变量管理,数组变量之间的赋值是“管理权限的赋予”,数组之间的比较是判断两个数组是否管理相同数组。


复制数组

必须遍历源数组将每个数组元素逐一拷贝给目的数组。



。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。


5.2 数组计算


投票统计

数据与算法设计;创建数组,数组参与运算,遍历数组输出


遍历数组——for-each循环

搜索程序【在给定的数据中,找出某个数据是否存在】

线性的搜索算法,遍历数组的for循环运用

for-each循环【   for (int k :data) {  循环体}】    data是数组【对于data数组当中的每一个元素,依次每一轮拿出来作为k的值】,只能读出数组的值不能修改数组

for (类型  变量  :   数组){    



数组的例子:素数

算法改进:每个遍历,偶数改进,sqrt(x)。【  n  ->  n/2  - >  sqrt(n) 】效率提升

方案改进:构造前50个素数,用素数判断是否为素数

模块命名: continue  模块名 ;

构造素数表:素数的倍数不是素数,。【构造以内的素数表】


计算机和人的思考方式不同。


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。


5.3 二维数组



例:

int [ ] [ ]   a =  new  int    [ 3  ]   [  5 ]    ;



二维数组的遍历

a  [ i ]  [ j ]  ;【i行,j列】



二维数组的初始化

 int [ ] [ ]   a =  {     {1,2,3,...}  ,   {....},     {.....},.............  ,{.....},  };【每行一个{},用“,”分隔,省略补零】。



井字棋游戏程序

读入3*3的矩阵,游戏胜利条件算法构造