![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CS61B
文章平均质量分 94
芝士蓝莓派
这个作者很懒,什么都没留下…
展开
-
Week 7 | Lecture 17 18 19 | 算法分析 | CS61B-Spring-2018
1.分析算法运行时间的简化过程只考虑最坏的情况。选择一个有代表性的工序(又名:cost model),计算该工序需要进行多少次忽略低阶项忽略系数2. Big Theta不需要找到k1,k2,只需要做和之前一样的分析即可。...原创 2020-06-13 10:45:37 · 324 阅读 · 0 评论 -
HW1 | 吉他拟音 | CS61B-Spring-2018
接口和抽象类的用法:接口常常有一串层次结构,这些接口由抽象类继承,并提供默认实现。抽象类又由具体的类继承。一个很好的例子是Collection接口:它扩展了Iterable(它的超级接口),并由许多子接口(即List,Set,Map)实现,而这些子接口又具有自己的抽象实现(AbstractList,AbstractSet AbstractMap)(关于接口中的default方法与抽象类中的方法,我的理解是,default方法无法代替抽象类方法,因为接口中没有实例变量,许多方法无法实现(比如getter和原创 2020-06-10 19:15:10 · 668 阅读 · 3 评论 -
Week 6.1 | Lecture 15 | Pakages and Access Control | CS61B-Spring-2018
一、Pakages包名称为所有内容提供了唯一名称。使用import导入包,就可以使用其中的类。1. 包创建包手动创建创建一个包需要执行以下两个步骤:1.)将软件包名称放在该软件包中每个文件的顶部package ug.joshh.animal;public class Dog {...}2.)将文件存储在具有适当文件夹名称的文件夹中。该文件夹的名称应与您的软件包相匹配:ug.joshh.animal package is in ug/joshh/animal folder原创 2020-06-10 12:43:02 · 250 阅读 · 0 评论 -
Week 5.4 | Lecture 14 | 迭代器 | CS61B-Spring-2018
List的迭代器使用Interable接口public interface Iterable<T> { Iterator<T> iterator();}List类继承了该接口,所以有iterator()方法,用于返回一个Iterator对象public interface List<T> implements Iterable<T>{ Iterator<T> iterator(); ...}Ite原创 2020-06-06 14:51:09 · 199 阅读 · 0 评论 -
Week 5.3 | Lecture 14 | Exception | CS61B-Spring-2018
一、抛出、捕获异常1. Throw exception隐式异常:Java本身抛出的异常。public static void main (String[] args) { ArrayMap<String, Integer> am = new ArrayMap<String, Integer>(); am.put("hello", 5); System.out.println(am.get("yolp"));}$ java ExceptionDe原创 2020-06-06 11:58:26 · 182 阅读 · 0 评论 -
Week 5.2 | Lecture 13 | 一些其他Java特性:泛型方法和type upper bounds | CS61B-Spring-2018
创建一个ArrayMap类,该类实现了Map61BInterface,ArrayMap将具有以下方法: put(key, value): Associate key with value. containsKey(key): Checks if map contains the key. get(key): Returns value, assuming key exists. keys(): Returns a list of all keys. size(): Returns number o原创 2020-06-06 11:04:21 · 188 阅读 · 0 评论 -
Week 5.1 | Lecture 13 | 一些其他Java特性:自动转换和不变性 | CS61B-Spring-2018
public static <K extends Comparable<K>, V> K maxKey(Map61B<K, V> map) {...}<K extends Comparable<K>>,意味着传递到这个方法中的K类型,必须是继承自 Comparable< K >类的,否则报错。(因为需要用到Comparable接口中定义的CompareTo方法)其中< K >的意思是,我要将“我”(this)与其他k相原创 2020-06-06 11:04:13 · 161 阅读 · 0 评论 -
Midterm 1 | CS61B-Spring-2018
记录一下自己的错题感觉midterm1确实挺有难度的T T1. Q1.传参问题fillone方法只改变了d中存储的地址,不能改变x[0]的。2. Q3. 重载方法 与 强制转换参数不同就是重载方法,而不是重写方法。调用哪个重载方法取决于参数类型和变量的静态类型。虽然BioBox继承自StandardBox,但是这三个unlock方法都是重载方法,而不是重写方法。即,对于BioBox来说,有三个unlock方法,其中一个继承自StandardBox。静态类型取决于两处,一处是声明时的类型,原创 2020-06-05 00:05:21 · 414 阅读 · 0 评论 -
Week 4.3 | Lecture 11 | ADT、抽象类 | CS61B-Spring-2018
1. 抽象数据类型ADT抽象数据类型( ADT,Abstract Data Type)是指一个数据结构的数学模型以及定义在此数学模型上的一组操作。抽象数据类型是描述数据结构的一种理论工具,其目的是使人们能够独立于程序的实现细节来理解数据结构的特性。抽象数据类型的定义取决于它的一组逻辑特性,而与计算机内部如何表示无关。要理解一种ADT,需要理解它的三方面:数据对象如何定义、数据对象之间的关系如何定义、对数据对象的操作如何定义。2. Java LibrariesJava具有某些可以使用的内置ADT。这原创 2020-06-01 19:40:00 · 272 阅读 · 0 评论 -
Week 4.2 | Lecture 10 | 多态性设计通用方法、比较器 | CS61B-Spring-2018
接口不ectends objectdynamic method selection法则:编译器的法则:编译器允许memory box存储子类型。编译器编译的时候,是否出编译错误取决于静态类型。运行过程中的法则(run-time):在运行过程中,是否调用被重写的方法取决于动态类型。其他所有都取决于静态类型,包括重载方法的选择。例:这一段代码是否会报编译错误?在运行过程中,调用的是哪个方法?Object o2 = new ShowDog("Mortimer","Co.原创 2020-06-01 16:42:13 · 305 阅读 · 0 评论 -
Week 4.1 | Lecture 9 | Inheritance,Extends,Casting | CS61B-Spring-2018
一、Inheritance,Extends下面要用到的一个例子:VengefulSLList是SLList的子类,它的作用是能够打印被删掉的items。public class VengefulSLList<Item> extends SLList<Item> { SLList<Item> deletedItems; public VengefulSLList() { deletedItems = new SLList<Item原创 2020-06-01 10:32:53 · 303 阅读 · 0 评论 -
Proj1a 数据结构:双端队列| CS61B-Spring-2018
主要任务编写双端队列,能够addFirst, remove First, addLast, removeLast.并实现其他一些辅助功能。使用两种数据结构来完成双端队列,分别是链表和数组。要求这两种数据结构的add和remove操作都花费O(1)的时间,即与队列长度无关。LinkedListDeque主要思路见Week2中的双向链表。主要思路是:循环链表与哨兵节点:在双向链表中设置一个哨兵节点,它的next永远指向第一个节点,pre永远指向最后一个节点(即使此时链表为空,只有它自己,那么nex原创 2020-05-30 22:59:19 · 1462 阅读 · 0 评论 -
Lab 3 Unit Testing with JUnit, Debugging| CS61B-Spring-2018
菜单-run,出现的菜单中,您使用带有红色/绿色箭头的版本,则IntelliJ将呈现测试结果(默认渲染器)。如果将版本与白色/蓝色框一起使用,则将运行jh61B渲染器(好像是因为下载了CS61B插件,这个渲染器是CS61B老师自己写的)。两种都可。(run之后出现的列表中,同一类会显示不同的渲染器renderer来运行程序)reverse单向链表处理空参数的问题注意:this不能为空,因为this指代的是“我自己”这个对象,所以“我”一定是存在的。在本题中,在测试输入为空方法是否仍有效时,如果.原创 2020-05-30 00:32:14 · 711 阅读 · 1 评论 -
Week 3.3 | Lecture 8 | Inheritance, Implements | CS61B-Spring-2018
一些概念例:想要返回一堆字符串中最长的一个。public static String longest(SLList<String> list) { int maxDex = 0; for (int i = 0; i < list.size(); i += 1) { String longestString = list.get(maxDex); String thisString = list.get(i); if (th原创 2020-05-28 18:34:28 · 270 阅读 · 0 评论 -
Week 3.2 | Lecture 7 | JUnit、选择排序 | CS61B-Spring-2018
JUnit每次修改都应该进行test确保方法的正确性。将一个算法分为各个小方法,能够简化方法的实现。并且,每次对小方法的实现进行测试,能够确保每个小部分的正确性,从而减少组装整个算法时的错误。JUnit文档注意:若要使用@Test注解:必须将test方法改成非静态。且不用写main函数。(不使用@Test,可以写为static方法,并在main函数中调用)使用import可以省略掉@org.junit.Test和org.junit.Assert.assertEquals(expected2原创 2020-05-28 17:14:50 · 340 阅读 · 0 评论 -
Proj0 NBody 绘制太阳系| CS61B-Spring-2018
this:指当前类中的成员变量。注意,当传入的参数名与成员变量名重名时,一定需要使用this来表示成员变量(而非当前方法的参数)。原创 2020-05-26 23:13:53 · 1082 阅读 · 8 评论 -
Lab 2 IntelliJ Home Setup、IDEs、IntList| CS61B-Spring-2018
实验二设置1. 安装IDEA2. 安装CS61B插件 settings-plugins3. 导入项目注意:import与open不同。最稳妥的办法是import(import能够导入其他平台开发的项目以及具有其他框架或者maven管理的项目)。当目前已经打开了其他的项目时,应该files-new-project from exiting sources;当目前已经open了这个项目并老出问题,file-close project,然后选择import project4. 选择SDK在导原创 2020-05-26 12:10:51 · 1816 阅读 · 2 评论 -
Week 3.1 数组、ArrayList| CS61B-Spring-2018
数组1. 数组的内存对比其他声明类型的内存:int x; 给我们提供了一个存储int的32位内存盒。Walrus w1; 给我们提供了一个64位内存盒,用于存储Walrus地址。Walrus w2 = new Walrus(30, 5.6);总共给我们3个内存盒。给w2一个64位内存盒用于存储Walrus地址,创建的Walrus对象被分配一个32位内存盒用于存储Walrus的int,一个64位内存盒用于存储Walrus的double tuskSize。创建数组则会被分配1个32bits内存盒存原创 2020-05-14 15:43:41 · 583 阅读 · 0 评论 -
Week 2 reference、链表| CS61B-Spring-2018
一、ReferencesWalrus a = new Walrus(1000, 8.3);Walrus b;b = a;b.weight = 5;System.out.println(a);System.out.println(b);对b的改变会影响a吗?–会。因为new Walrus(1000, 8.3)新建了一个对象,将其赋值给a即是令a的内存空间指向该对象。而b=a则是将a的内存空间的内容复制给b的内存空间,也就是在b的内存空间中填充指向Walrus的地址。当使用b.weight=5原创 2020-05-09 01:48:25 · 1163 阅读 · 5 评论 -
Lab1 javac, java, git | CS61B-Spring-2018
Git注意:可以用git status查看当前git的状态可以用git log查看commit记录.其中的字符串是commit的id。E:\programming\CS61B\lab1-checkoff>git logcommit b53bb1174307fcde83d29ce80d5bf3aa5e30208b (HEAD -> master)Author: Li Xi...原创 2020-05-08 01:38:13 · 1095 阅读 · 0 评论 -
Week 1 HelloWorld、定义和使用类| CS61B-Spring-2018
一. HelloWorld1. Java的关键语法public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); }}所有代码都存在于一个类中。执行的代码在称为的函数(也称为方法)为main函数。所有变量、参表...原创 2020-05-05 23:31:23 · 986 阅读 · 0 评论 -
5.1 CS61B 01,02
面向对象编程对象:数据的仓库类:一种对象。可能存在同一个类的多个对象。方法:操作对象或类的过程。继承:一个类从另一个更general的类中继承属性。多态Polymorphism:能够在不同对象的类中调用同一方法,即该方法的调用在这些类中的实现不同。面向对象:每一个对象都知道他们自己的类和类中的方法。面向对象和面向过程最主要的区别就是多态。声明与初始化声明声明变量的名字...原创 2020-05-01 19:18:15 · 202 阅读 · 0 评论