美文网首页
【阅读材料】基础知识

【阅读材料】基础知识

作者: 乐音X | 来源:发表于2020-04-22 23:10 被阅读0次

要掌握软件构造这门课程,首先需要一些基础知识,其中包括JAVA编程语言以及一些其他的规约、概念,本文的内容对应MIT阅读材料中Reading 2: Basic Java的内容。

关于JAVA 的基础知识,如果学习过C语言的话,其实不必专门学习,想要用到什么再去查就好。如果像系统学习,可以遵照上面MIT中指示的那样去学,也可以去菜鸟教程网站去学。但是不要花费太多时间,那样太无聊了,很容易失去兴趣。本文则主要针对一些在这门课中出现的一些特别的概念进行总结。

一、快照图(Snapshot diagrams)

快照图这个名称是英文直译,它长下面这个样子。

快照图

可以看到,这个图相当于在程序运行的某一时刻,把程序里面的数据结构形象地画出来,所以叫快照图。例如上面这个图就表示,有一个叫turtle的实例,里面有一个域,就是数据类型为Map<String, Turtle>的字典(准确翻译应该叫映射,不过字典这个词更加形象)。这个字典里存储着三个键值对,其中一个键值对的键为“Buster”。

快照图非常直观地描述了当前时刻内存中地数据结构与状态,因此用处十分广大。程序员最大的问题就是不喜欢写注释,有时候写着写着自己都忘了自己当时写的是什么,相信每个人都有自己的作标记的方法,而快照图则提供了一种标准,不仅利于自己记忆,也有助于与团队成员进行交流。

快照图中,圈代表类,箭头从引用指向引用的值。指向的常量叫做Primitive values,指向的类叫做Object values。

基础值 类值

二、可变性与不可变性(Mutability & Immutability)

可变性与不可变性的概念其实十分简单,但是不太容易用语言表达清楚。编程语言中我们总是要定义变量,比如“Type x=a”表示定义了一个类型为Type的变量,其实可以理解为挖了一块内存空间,取了个名字叫做“x”,并且把这片内存空间赋值为a。如果说Type这个类型是可变的,那么我们可以直接在原来的内存空间上把a变成其他的值,比如重新赋值为ab,用快照图表示如下:

可变的数据类型

如果说Type这个类型是不可变的,那就不能在原来的内存空间上进行修改了,得重新挖一片内存,赋以新值,然后把这片内存空间叫做x,原来那片就不能叫“x”了。如果原来那片内存空间这时候一个名字都没有了,也就是说程序访问不到了,它没用了,那么它就会被Java自带的垃圾回收机制Garbage Collector给回收回计算机系统,以后想要内存了再说。快照图表示如下:

不可变的数据类型

其实这里还有一个细节,可变的数据类型是单层圆形,不可变的数据类型是双层原型,倒回去可以发现举的例子中快照图就是这么画的。

另外还有一种特殊情况,可以将可变的数据类型可以通过修饰词变成不可变的,叫做Immutable references,例如“final int n = 5;”,此时变量只能被初始化一次,便不能再次改变,相当于C语言中的常量。但是这里的不能改变只是不能用“=”来重新赋值,如果这个实例内部存在一些方法,比如“list.add()”,就可以改变内部的值。可见,此限制只是使得变量的内存空间不能再发生改变,但是如果可以修改该内存内部的值,变量的值还是可以改变的。(例如要是把java中的一个List列表a设置为final,这个List就只能指向原来List中的第一个元素了。我们知道List中的一串元素是相连的,知道了第一个就知道了全部,但是这些元素并不是List每个元素的值,而是指向这些值的地址,此时只要把这些地址给修改了,List的值就会改变。这样一通操作,这个a的值——地址元素的首地址没变,但是每个地址元素都变了,List自然也就不是原来的List了)。

万变不离其宗,触类旁通。

三、规约(Specifications)

所谓规约,就是对于一个类(Class)中每个方法(method)的详细描述。同样地,规约也是同时面向开发者和使用者的。它主要包括下面几个方面:

1.    方法签名(method signature):包括函数的名字、参数、返回值的类型,以及这个函数可能会抛出(也就是造成)哪些异常。这些综合在一起,就可以形成一个方法的独特标识,因此叫做方法的签名。

2.    完整的描述:就是对这个方法的功能、意义的完整的文字描述。

3.    参数(Parameters):就是对方法各个参数所代表的意义作出解释。

4.    返回值(Returns):这个方法返回的东西代表什么。

有了规约,我们不需要看代码,就能够理解并正确使用一个类中的所有方法。

相关文章

  • 【阅读材料】基础知识

    要掌握软件构造这门课程,首先需要一些基础知识,其中包括JAVA编程语言以及一些其他的规约、概念,本文的内容对应MI...

  • SunnyCareer材料物理专业解读及就业趋势分析

    材料物理专业学生主要学习材料科学的基础知识、材料物理的基本理论和材料的组成、结构、性能、加工及应用等方面的基本知识...

  • TabLayout背景

    基础知识 com.google.android.material.tabs.TabLayout在材料主题下,默认是...

  • 赶考网:你还不知道的中考状元的29条黄金法则!

    1、地毯式扫荡。先把该复习的基础知识全面过一遍。追求的是尽可能全面不要有遗漏,哪怕是阅读材料或者文字注释。要有蝗虫...

  • 今日阅读材料

    初,郑武公娶于申,曰武姜,生庄公及共叔段。庄公寤生,惊姜氏,故名曰寤生,遂恶之。爱共叔段,欲立之。亟请于武公,公弗...

  • 阅读材料PYTHON

    Python简介 Numpy工具集合 简介 numpy工具集是在Python环境下用于科学计算的工具集合 利用ar...

  • 0 阅读材料

    书籍 《超预测:预见未来的艺术与科学》本书介绍为什么有些人有很强的预测能力,我们如何培养自己的预测能力?作者所研究...

  • 0 阅读材料

    参考TK教主介绍的个人成长方法列举数据行业相关阅读材料: 大佬 徐亚波一找/数说/塔布共同创始人, 中山大学教师。...

  • 3.1.2.0 阅读材料

    书籍: 根据漆桂林老师的推荐 Principles of Semantic Networks by John So...

  • 2020-01-07一注建小公举的今日复习

    建筑材料第一节:基础知识。所有的建筑材料都是用于建筑、构筑的,无非承重、围护、装饰等用途,哪种用途用什么材料,这完...

网友评论

      本文标题:【阅读材料】基础知识

      本文链接:https://www.haomeiwen.com/subject/brwgihtx.html