JavaSE入门级-第四课-数组与程序设计

 

引用数据类型数组

如果需要连续声明10个数据可以使用数组,数组表示同类数据的集合

数组的定义

l  最简便的声明:

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

l  最麻烦的声明:

int[] arr2 = new int[] {1,2,3,4,5};

l  最规范的声明:

int[] arr3 = new int[5];

arr3[0] = 1; arr3[1] = 2;

 

l  解析:

上述代码中 int 表示数组的类型 [] 表示数组的特殊标记,new 表示开辟一块新的内存空间,数组是引用数据类型,在java中所有的数据都是保存在内存中,对于内存,在这里我们简单的理解为 分成 堆(heap)和 栈(stack),栈保存基本数据,引用数据 引用部分在栈,真实数据部分在堆,如下图所示:(稍作了解就好了)

 

 

 

(注意:数组的堆内存中的连续空间)

 

线性表(补充)

这里方便大家理解数组,补充一段《数据结构》的基本知识线性表

l  定义

线性表指的是数据的存储结构是线性的连续的(物理 或 逻辑),线性表常见的操作方式有新增,修改,删除,查询 成为 遍历 和 编辑

l  顺序表 与 链表

线性表,如果一次性申请连续的内存空间并且将数据存储其中这类表示顺序表,顺序表的特点 查询速度快,因为 只需要找到表的内存地址就能够推断出每一个元素的位置,但是因为地址必须连续所以此类表的缺点 在 新增 或者 移除节点的时候比较慢

(电影院的座位 大楼的楼层 都是顺序表)

链表,如果无法申请到连续的内存空间,而我们又需要存放一组数据,可以使用链表,链表在每一个节点的末尾都保存了下一个节点的地址,所以链表在插入节点快,遍历节点慢

(书的目录 快件的地址 都是链表)

数组的特性

数组在使用过程中有区别于级本数据的特点:

l  数组名表示 伪地址

System.out.println(arr1);  显示结果为  [I@15db9742

 

l  访问数组 min为0  max为length-1

访问数组中的元素必须通过下标访问  arr[index] 

(注意:第一个元素是从0开始,如果超过了数组的长度会报错)

 

l  数组长度属性 length

数组提供了直接获取长度属性的 length

例:arr1.length  结合上文整理应该为5

 

l  数组遍历

如需要访问整个数组需要使用for循环遍历,实例代码如下:

 

 

 

 

l  数组默认值

数组属于引用数据类型,在使用new申请堆内存控件以后会给每个元素赋默认值

 

练习1 均值问题

定义一个整型数组,内元素有 9 ,6,10,15,7,3,2,求出这个数组的最大值 最小值 平均值

 

练习2 冒泡排序

上题中的数组,请使用冒泡排序将数组从小到大排列并且输出,实现代码如下:

 

 

 

 

数组输入赋值

Scanner 输入数据,是连续输入,如果使用空格不会中断输入,回车才会中断输入,所以如下代码:

 

 

 

 

二维数组

二维数组,指的是数组中的每个元素都是一维数组

l  二维数组定义

int[][] arr4 = {{1,2,3},{4,5,6}};

l  二维数组元素访问,使用两个左边定位

System.out.println(arr4[1][2]);

 

l  杨辉三角实现(了解)

    public static void main(String[] args) {

       int[][] array = new int[5][5];

       for (int i = 0; i < 5; i++) {

           for (int j = 0; j <= i; j++) {

              // 第一列 行和列相等

              if (j == 0 || i == j) {

                  array[i][j] = 1;

              } else {

                  array[i][j] = array[i - 1][j - 1] + array[i - 1][j];

              }

              // 打印数组中的这个元素

              System.out.print(array[i][j] + " ");

           }

           System.out.println();

       }

    }

 

运行效果:

 

 

 

 

程序设计

互联网公司中,设计实现程序需要按照一定的步骤 或 阶段,我们把这些步骤称为 软件工程生命周期,可以分成5个部分。

需求分析

需求分析是根据客户或者产品的要求,给出软件的具体描述,需求分析阶段需要得到的结果是判断软件的可行性,写出软件的功能文档,或者 软件原型图

软件设计

软件设计是在需求文档,或者原型图的基础上,给出软件的 E-R图,关系模型图,功能接口图

编码实现

编码实现阶段指的是,根据软件设计的文档落实到具体的功能代码

软件测试

软件测试阶段指的是,将不同时期或者是不同人编码的完整功能融合在一起,试运行,软件测试有明确要求,必须测试所有的功能模块,保证软件100%无差错才可以发布,否则需要返工,重写

 

部署维护

软件测试通过以后,软件产品开始交互阶段,应安排一名专业人员对软件可能出现的问题负责,因为再详细的测试也有可能会举例不足,或者用户有一些其他功能需要新增

 

l  下面介绍一种最简单且最高效的软件研发模式,瀑布模型:

瀑布模型指的是严格按照软件工程的生命周期结合所有人力按照层次解决现阶段问题

 

 

 

优点:高效,因为当下所有人都在做一件事

缺点:容易返工,因为如果有一个环节出错,它后面的环节一定错

 

抽奖系统

l  项目需求

《模拟彩票系统》,要求用户进行登入操作,只需要输入密码,系统以内置密码12345校验用户输入密码,登入成功后用户输入Y表示开始摇奖,随机抽取3个不重复的数字,范围在1到30以内,最后将结果输出,可以抽多次指导输入N表示结束

l  代码提示

 

 

 

自动改卷系统

l  项目需求

考试时有20道选择题,要求实现自动改卷系统,输入学生的姓名和答案,全部输入结束后给出学生的成绩,假设一道选择题5分

 

推数字小游戏(难)

l  项目需求

定义一个 3×3 的9宫格矩阵,随机打乱当中顺序,将数字还原成:

1  2  3

4  5  6

7  8  9

为游戏胜利条件,游戏规则:

只能移动 数字5 与其他数字完成为止交换,W-上,S-下,A-左,D-右

 

面向逻辑总结

编程

指的是调用已经存在于计算机的指令或命令按照顺序或组合的方式完成程序

计算机的二进制

计算机只能够识别两种电流将电流转换成为电信号就是0和1

JDK

jdk是java的转换器,把特定的英文单词编程二进制,更容易人类使用

基本数据类型

java有8中基本数据类型 byte short int long float double char boolean

引用数据类型

目前我们接触的引用数据类型只有数组,变量在栈内存,真实值在堆内存

数据运算

java支持的数据运算有 算数运算 关系运算 逻辑运算 位运算 条件运算 等

语句

java的基本语句有 赋值语句 条件语句if switch 循环语句while for

面向逻辑思想

面向逻辑思想是最基本的编程思想,指的是将 生活中的事 算法问题 数学问题 公司业务 转换成为 量(数据) 和 语句 表达出来

 

posted @ 2021-07-16 15:39  二娃千里眼  阅读(74)  评论(0)    收藏  举报