20172325 2018-2019-1 《Java程序设计》第二周学习总结

20172325 2018-2019-1 《Java程序设计》第二周学习总结

教材学习内容总结

3.1集合

  • 集合是一种聚集、组织了其他对象的对象。集合可以分为两大类:线性集合和非线性集合。
  • 线性集合:一种其元素按照直线方式组织的集合。
  • 非线性集合:一种其元素按某种非直线方式组织的集合。
  • 集合中元素的彼此之间的组织形式通常由元素添加到集合的次序和元素自身的一些内在关系决定。
  • 抽象数据类型(ADT):是一种在程序设计语言中尚未定义其值和操作的数据结构类型。ADT的抽象性体现在,ADT必须对实现细节进行定义,且这些对用户是不可见的。
  • Java集合API(应用程序编程接口):一个类集,表示了一些特定类型的集合,这些类的实现方式各不相同。

3.2栈集合

  • 栈(STACK)是一种线性集合,其元素的添加和删除都是在同一端进行的。其遵循后进先出(LIFO)原则,可颠倒顺序。
  • 栈的基本操作
  • 操作:描述
    push:添加一个元素到栈的顶部
    pop:从栈的顶部移出一个元素
    peek:查看栈顶部的元素
    isempty:确定栈是否为空
    size:确定栈的元素数目

3.3主要的面向对象概念

  • 利用多态引用和继承,可以创建可以储存任意类型的对象的集合。
  • 多态引用是一个引用变量,他可以在不同地点引用不同类型的对象。术语“多态性”可定义为“具有多种形式”。通过多态引用调用的某个方法,在每次调用的时候都可以发生变化。
  • 继承可用于创建一个类层次,一个引用变量可用于指向与之相关的任意对象。继承就是从已有类派生出一个新类的过程。新类自动地含有初始类的部分和全部变量和方法。
  • 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

3.4使用栈计算后缀表达式

  • 由栈提供的操作与后缀表达式计算过程有着很好的一致性。使用栈来计算后缀表达式的算法描述如下:从左到右扫描表达式,依次识别出每个符号(操作符或操作数)。如果是操作数,就将其压入(push)栈中。若是操作符,则从栈中弹出(pop)两个操作数,并把先弹出数放在符号右侧,后弹出数放在符号左侧进行计算,然后把计算结果压入(push)到栈中,循环往复,当进行到表达式的末尾时,栈中所剩余的元素便是该表达式的结果。
  • javadoc注释(为Java添加注释的官方标准):以/**开始、以 */结束。Javadoc可用于创建关于类集的在线的HTML文档,在线的JavaAPI文档就是例子。

3.6栈ADT

  • Java接口定义了一个抽象方法集,有助于把抽象数据类型的概念与其实现分开。
    public interface stackADT <T>

3.7用数组实现栈

  • 数组中的单元数量称为容量,该值储存在数组的length常量中,数组一旦创建好,其容量是不能改变的。

3.8ArrayStack类

  • 泛型(包括泛型数组)不能被实例化。所以我们必须创建一个存储Object引用的数组,然后把他转换成泛型数组。
  • 在将Object数组转换成泛型数组时一定会出现未检验类型转换警告,所以加上@SuppressWarnings(“unchecked”)即可。
  • push、pop、peek、isempty、size等方法的具体使用。

4.1链接作为引用

  • 对象引用变量可以用来创建链式结构,链式结构是一种数据结构
  • 对象引用变量存放的是对象的地址,表示对象在内存中的存储位置
  • 在链表中存储的对象通常泛称为该链表的结点,注:需要一个单独的引用变量来表示链表的首结点,链表终止于其next引用为空的结点

4.2管理链表

  • 对于管理链表时,进行删除和插入的方式的顺序是很重要的,如果不当,会将出现某段结点消失的情况
    改变引用顺序是维护链表的关键

4.3无链接的元素

  • 存储在集合中的对象不应该含有基本数据结构的任何实现细节

4.4JavaAPI中的栈

  • java.util.Stack类是从Vector派生而来的,它带给了栈一些不恰当的操作。

4.5使用栈来穿越迷宫

  • 这一节是迷宫的类型。说明的是:可以用栈来模拟递归处理,以跟踪恰当的数据

教材学习中的问题和解决过程

  • 问题1:在做选择排序和冒泡排序的时候对于冒泡排序法完全没了印象
  • 问题1解决方案:
    冒泡排序:
    原理:比较两个相邻的元素,将值大的元素交换至右端。
    思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
    第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;
    第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;
    依次类推,每一趟比较次数-1;
  • 冒泡排序的思维是最简单的,但是代码实现起来并不是很容易。当时用循环来比较的时候,就一直要把链表的节点向后推,但要用一个中间变量temp来保存前面的数字,然后做数字交换,最后把遍历的起始节点重指向头结点。
  • 由于细节比较或是循环问题,速度上体现为:插入排序>选择排序>冒泡排序,三种排序的比较:其时间复杂度都是O(n^2)。

代码调试中的问题和解决过程

  • 问题1:在蓝墨云的作业中,有个要求是实现删除和插入的操作,但是最开始我没有注意到,结果就是1332959-20180918222741747-779872071.png

  • 问题1解决方案:听同学说我做的少了很多东西,又重新增加了一些代码,实现了插入和删除1332959-20180918222834567-293390607.png结果是1332959-20180918222846442-1221309849.png

代码托管

1332959-20180918224143757-1725710162.png

上周考试错题总结

1332959-20180920102948217-959574907.png

  • 理解情况:在做这道题的时候,我太过于钻牛角尖,我认为少了“或费极少的力”,于是错了,但是现在看来更加深了理解。

1332959-20180920103208937-115538333.png

  • 理解情况:软件工程,不是电气工程。

1332959-20180920103410656-664823183.png

  • 理解情况:书上的内容,没有认真看书。

1332959-20180920103603340-1472838449.png

  • 理解情况:栈的操作是先进后出,颠倒了数据的顺序,故不能保存顺序。

1332959-20180920103904726-1266183629.png

  • 理解情况:当时没有很理解书上关于增长函数的图表,后来理解之后发现O(2n)的函数增长最快。

1332959-20180920104145487-722447298.png

  • 理解情况:根据增长函数的图像可知。

结对及互评

  • 博客中值得学习的或问题:
    • 在教材和代码问题上很详细,同时很会找问题记录问题。
  • 代码中值得学习的或问题:
    • 代码操作并没有像我一样忘记很多
    • 对代码的规范性也更加注意了
  • 基于评分标准,我给本博客打分:9分。
  • 20172306

其他(感悟、思考等,可选)

这周有了新的学习任务,开始慢慢找回原来的感觉,但是还是感觉忘了很多东西,着实花了不少功夫,还有因为学代会的召开,耽误的两节课程,我会抓紧时间找同学找老师问问题补回来。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周0/01/120/20
第二周941/84812/218/20

参考资料

  • Java学习笔记(第8版)

  • 《Java学习笔记(第8版)》学习指导

转载于:https://www.cnblogs.com/20172325DYK/p/9671656.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

题解 luogu P2568 GCD

题解 luogu P2568 GCD 时间&#xff1a;2019.3.11 欧拉函数前缀和 题目描述 给定整数\(N\)&#xff0c;求\(1\le x,y \le N\)且\(\gcd(x,y)\)为素数的数对\((x,y)\)有多少对. 分析 枚举素数\(p\), 先求出\(1\le x,y \le \left \lfloor \dfrac n p \right \rfloor\)且\(\gcd(x, …

解决前后台发送请求或者接口之间发送请求乱码的问题

前后台传中文乱码&#xff1a; 前台使用encodeURI 进行编码 后台使用decode进行解码 如果接口之间调用出现乱码.接收方是&#xff1f;&#xff1f;&#xff1f;&#xff1f;这种。传送方式明文的处理方式&#xff1a; 发送方使用decode 进行编码&#xff1a; 接收方使用的ecod…

.net Core发布至IIS完全手册带各种踩坑

服务器环境配置 和各位大爷报告一下我的服务器环境 : Windows Server 2012 iis 8 小插曲开始: 运维大哥在昨天给了我一台新的server 0环境开始搭建 。 并且没有安装任何的系统补丁。 第一件事情请开始打 补丁 打完补丁之后有时补丁会不完全 ,所以需要去官网获取补丁: KB2919355…

Unity --- MeshRenderer之网格合并

创建如图所示的对象结构,parent为空对象&#xff0c;然后将下面的代码挂载到parent对象上运行即可。 1 using UnityEngine;2 using System.Collections;3 4 public class CombineMeshAndMaterials : MonoBehaviour5 {6 void Start()7 {8 CombineMesh();9 }…

Win10还原被Windows Defender隔离的文件

Win10最新版本的Windows Defender隔离/删除的文件没有还原的选项&#xff0c;导致很多破解文件或是注册机直接隔离&#xff0c;到威胁历史记录中去却无法恢复。经过各个尝试&#xff0c;到微软官方论坛中也尝试了很多方法&#xff0c;后来发现竟然恢复啦。各位小伙伴可以试试这…

(Review cs231n) Backpropagation and Neural Network

损失由两部分组成&#xff1a; 数据损失正则化损失&#xff08;data loss regularization&#xff09; 想得到损失函数关于权值矩阵W的梯度表达式&#xff0c;然后进性优化操作&#xff08;损失相当于海拔&#xff0c;你在山上的位置相当于W&#xff0c;你进行移动&#xff0c…

【计算机算法设计与分析】——排序

一.排序 二.插入排序 &#xff08;1&#xff09;算法描述 &#xff08;2&#xff09;性能分析 &#xff08;3&#xff09;寻求优化 三.归并排序 &#xff08;1&#xff09;算法思想 &#xff08;2&#xff09;性能分析 &#xff08;2&#xff09;示例 &#xff08;3&#xff09…

QT 随机数生成

下面总结了QT中随机生成的方法&#xff08;仅供学习参考&#xff09;&#xff0c;分为旧方法和新方法&#xff0c;一般来说&#xff0c;旧的方法已经被抛弃&#xff0c;在开发新的应用中推荐使用新方法。 C Code 123456789101112131415161718192021222324#include <QCoreApp…

Activiti中的关于子流程中的并发节点标记处理

最近在研究一个轻量级的工作流引擎Activiti&#xff0c;就遇到了子流程中无法标记其并发节点的问题&#xff0c;经过几天的研究&#xff0c;想到了一个简单易懂的方法&#xff0c;总结如下&#xff0c;希望对你们能有所帮助&#xff0c;有写的不对的地方&#xff0c;还希望大家…

[WPF 基础知识系列] —— 绑定中的数据校验Vaildation

[WPF 基础知识系列] —— 绑定中的数据校验Vaildation 原文:[WPF 基础知识系列] —— 绑定中的数据校验Vaildation前言&#xff1a; 只要是有表单存在&#xff0c;那么就有可能有对数据的校验需求。如&#xff1a;判断是否为整数、判断电子邮件格式等等。 WPF采用一种全新的方式…

搜索(题目)

A.POJ_1321考查DFS的一个循环中递归调用 1 #include<iostream>2 #include<cstring>3 4 using namespace std;5 char a[10][10]; //记录棋盘位置6 int book[10]; //记录一列是否已经放过棋子7 int n, k; // k 为 需要放入的棋子数8 int t…

rest_framework中的url注册器,分页器,响应器

url注册器&#xff1a; 对于authors表&#xff0c;有两个url显得麻烦&#xff1a; rest_framework将我们的url进行了处理&#xff1a; 这样写了之后&#xff0c;就可以像原来一样访问author表了。 故意写错路径&#xff0c;看看它为我们做了哪些配置&#xff1a; 在有关author的…

网页排版与布局

一 网站的层次结构 制作便于浏览页面的一个大敌就是视觉干扰,它包含两类: a,混乱页面主次不清,所有东西都引人注目 b,背景干扰 1.把页面分割成清晰明确的不同区域很重要,因为可以使用户迅速判断出哪些区域应重点看,哪些可以放心地忽略. 2.创建清晰直观的页面层次结构;越重要越要…

Bash的循环结构(for和while)

在bash有三中类型的循环结构表达方法&#xff1a;for&#xff0c;while&#xff0c;until。这里介绍常用的两种&#xff1a;for和while。 for bash的for循环表达式和python的for循环表达式风格很像&#xff1a; for var in $(ls) doecho "$var"done 取值列表有很多种…

MVVM模式下实现拖拽

MVVM模式下实现拖拽 原文:MVVM模式下实现拖拽在文章开始之前先看一看效果图 我们可以拖拽一个"游戏"给ListBox,并且ListBox也能接受拖拽过来的数据&#xff0c; 但是我们不能拖拽一个"游戏类型"给它。 所以当拖拽开始发生的时候我们必须添加一些限制条件&a…

jenkins+Docker持续化部署(笔记)

参考资料&#xff1a;https://www.cnblogs.com/leolztang/p/6934694.html &#xff08;Jenkins&#xff08;Docker容器内&#xff09;使用宿主机的docker命令&#xff09; https://container-solutions.com/running-docker-in-jenkins-in-docker/ &#xff08;Running Docker i…

免安装Mysql在Mac中的神坑之Access denied for user 'root'@'localhost' (using password: YES)

眼看马上夜深人静了&#xff0c;研究了一天的问题也尘埃落定了。 废话不多说 直接来干货&#xff01; 大家都知道免安装版本的Mysql, 在Mac中安装完成&#xff08;如何安装详见Mac OS X 下 TAR.GZ 方式安装 MySQL&#xff09;之后&#xff0c;在登录时会遇到没有访问权限的问题…

用jquery实现html5的placeholder功能

版权声明&#xff1a;本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/QianShouYuZhiBo/article/details/28913501 html5的placeholder功能在表单中经经常使用到。它主要用来提示用户输入信息&#xff0c;当用户点击该输入框之后&#xff0c;提示文字会自己…

mac环境下node.js和phonegap/cordova创建ios和android应用

mac环境下node.js和phonegap/cordova创建ios和android应用 一介布衣 2015-01-12 nodejs 6888 分享到&#xff1a;QQ空间新浪微博腾讯微博人人网微信引用百度百科的一段描述:PhoneGap是一个用基于HTML&#xff0c;CSS和JavaScript的&#xff0c;创建移动跨平台移动应用程序的…

java中多线程 - 多线程中的基本方法

介绍一下线程中基本的方法使用 线程睡眠sleep() Thread.sleep(毫秒);我们可以通过sleep方法设置让线程睡眠。可以看到sleep是个静态方法 public static native void sleep(long var0) throws InterruptedException; try {System.out.println(new Date().getSeconds());Thread.s…