CS61B学习笔记(七)-Rd4.1-导言和接口
4.1 Intro and interfaces · Hug61B (gitbooks.io)
方法重载(method overloading)12public static String longest(SLList<String> list)public static String longest(AList<String> list)
这就是所谓的方法重载。当您调用 WordUtils.longest 时,Java 会根据您提供的参数类型知道要运行哪一个。如果为其提供 AList,它将调用 AList 方法。与 SLList 相同。
Java 足够聪明,知道如何为不同类型的两种相同的方法处理,这很好,但重载有几个缺点:
这是超级重复和丑陋的,因为你现在有两个几乎相同的代码块。
它需要更多的代码来维护,这意味着如果你想对方法进行一些小的更改,例如更正一个错误,你需要在 longest 方法中为每种类型的列表进行更改。
如果我们想创建更多的列表类型,我们必须为每个新的列表类复制该方法。
上位词、下位词和接口继承Hypernyms, Hyponyms, a ...
CS61B项目练习笔记(三)-Proj1
The Deque APIDeque(通常发音为“deck”)是双端队列的不规则首字母缩写。双端队列是具有动态大小的序列容器,可以在两端(其前端或后端)扩展或收缩。
具体而言,任何 deque 实现都必须具有以下操作:
public void addFirst(T item) :将某个类型的 T 项目添加到 deque 的前面。你可以假设这 item 从来都不是 null .
public void addLast(T item) :将类型的 T 项目添加到 deque 的背面。你可以假设这 item 从来都不是 null .
public boolean isEmpty() :如果 deque 为空,则返回, false 否则返回 true 。
public int size() :返回 deque 中的项数。
public void printDeque() :从头到尾打印 deque 中的项目,用空格分隔。打印完所有项目后,打印出新行。
public T removeFirst() :删除并返回 deque 前面的项目。如果不存在此类项,则返回 null 。
public T ...
中国矿业大学寒招介绍
学校基本介绍
美照
广东省分数线介绍
粗略版
招生专业类
23-计划数
23-平均分
23-平均位次
22-计划数
22-平均分
22-平均位次
21-计划数
21-平均分
21-平均位次
人工智能
6
608
21079
大数据管理与应用
2
607
21726
机器人工程
3
607
21726
2
599
22073
遥感科学与技术
4
606
22388
4
595
26470
计算机类
15
613
18163
15
604
18725
15
605
19989
电子信息类
12
609
20482
12
600
21339
12
598
24417
机械类
12
605
23074
10
598
22774
12
595
26470
安全科学与工程类
4
605
23074
5
596
25799
土木类
7
596
25799
4
596
25799
7
596
25799
建筑类
3
603
24424
2
599
23750
2
599
23750
...
CS61B项目练习笔记(二)--Lab3
经验点:
Stopwatch的使用
在类的两个实现之间执行比较测试。
随机调用类内部的方法。
在类的两个实现之间执行随机比较测试。
使用 IntelliJ 中的恢复按钮。
向断点添加条件。
创建异常断点。
Stopwatch库的使用123456789101112131415161718192021222324252627package timingtest;import edu.princeton.cs.algs4.Stopwatch;/** * Created by hug. */public class StopwatchDemo { /** Computes the nth Fibonacci number using a slow naive recursive strategy.*/ private static int fib(int n) { if (n < 0) { return 0; } if (n == 1) { ...
CS61B学习笔记(六)-数组基础的列表(2.4,2.5)
2.4 Arrays · Hug61B (gitbooks.io)
2.5 The AList · Hug61B (gitbooks.io)
数组数组基础数组是一种特殊类型的对象,它由一系列编号的内存盒组成。这与类实例不同,类实例具有命名的内存盒。为了得到数组的第i个元素,我们使用了在HW 0和Project 0中看到的括号表示法,例如 A[i] 得到A的第 i 个元素。
数组包括:
一个固定的整数长度N
一个由N个存储器盒组成的序列(N =长度),其中所有盒都是相同类型的,编号为0到N - 1。
和类不同,数组没有方法
数组创建
x = new int[3];
y = new int[]{1, 2, 3, 4, 5};
int[] z = {9, 10, 11, 12, 13};
所有这三种表达法都创建了一个数组。
第一种表示法,用于创建 x ,将创建一个指定长度的数组,并使用默认值填充每个内存框。在本例中,它将创建一个长度为3的数组,并使用默认值 int 0 填充3个框中的每一个。
第二种表示法,用于创建 y ,创建一个数 ...
CS61B学习笔记(五)--链表基础的列表(2.2,2.3)
2.2 SLList ·拥抱61B — 2.2 The SLList · Hug61B (gitbooks.io)
2.3 DLList ·拥抱61B — 2.3 The DLList · Hug61B (gitbooks.io)
SLLists在第 2.1 章中,我们构建了类 IntList ,这是一个列表数据结构,从技术上讲,它可以完成列表可以执行的所有操作。然而,在实践中,它 IntList 使用起来相当笨拙,导致代码难以阅读和维护。
从根本上说,问题在于 IntList 这就是我所说的裸递归数据结构。为了正确使用递归,程序员必须理解和利用递归,即使是简单的列表相关任务。这限制了它对新手程序员的有用性,并可能引入一类全新的棘手错误,程序员可能会遇到这些错误,具体取决于该 IntList 类提供的帮助程序方法类型。
初级版本:12345678910111213141516171819202122232425262728293031323334353637public class SLList { public class IntNode { ...
CS61B学习笔记(四)--Reading2.1-列表-海象之谜
什么是海象之谜?尝试预测当我们运行下面的代码时会发生什么。更改为 b 会影响 a 吗,更改为 x 会影响 y 吗?提示:如果你来自 Python,Java 也有相同的行为。
12345678910111213141516171819202122232425262728293031public class PollQuestions { public static void main(String[] args) { Walrus a = new Walrus(1000, 8.3); Walrus b; b = a; b.weight = 5; System.out.println(a); System.out.println(b); int x = 5; int y; y = x; x = 2; System.out.println("x is: " + x); System ...
CS61B学习笔记(三)--Junit测试
测试理念正确性工具#1:自动分级器自动评分器可能是您接触到的第一个正确性工具。事实上,CS61B的自动分级器是基于 JUnit 加上一些额外的自定义库。
对自动分级者有一些很大的好处。也许最重要的是,它可以为您验证正确性,使您免于编写所有测试的繁琐且无指导性的任务。它还通过提供多汁的分数作为实现正确性的激励,使评估过程游戏化。如果学生花费过多的时间追逐实际上不会影响他们的成绩或学习的最终分数,这也可能适得其反。
然而,自动分级器在现实世界中并不存在,依赖自动分级器会养成坏习惯。偶尔上传代码并等待自动评分器运行会阻碍一个人的工作流程。Autograder Driven Development 是一个极端版本,学生编写所有代码,修复编译器错误,然后提交给自动评分器。在得到错误后,学生可以尝试进行一些更改,在打印语句中撒上一些,然后再次提交。并重复。最终,如果您依赖自动评分器,则无法控制工作流或代码。
正确性工具 #2:JUnit 测试正如我们所看到的,JUnit 测试为您打开了一个新世界。您无需依赖其他人编写的自动评分器,而是为程序的每个部分编写测试。我们将这些部分中的每一个都称为一个单元 ...