软件构造期末复习知识点总结

数据类型与类型检验

一、程序编程语言中的数据类型

  1. 类型是一组值,以及可以对这些值执行的操作。
  2. 变量:用特定数据类型定义,可存储满足类型约束的值。
  3. 根据Java约定,原语类型为小写,而对象类型以大写字母开头。
    在这里插入图片描述
  4. 对象类型形成层次结构:除对象外,所有类都有一个父类,用扩展子句指定,如果省略了扩展子句,则默认设置为“对象”。一个类是其所有超类的一个实例,从其超类继承可见字段和方法,可以覆盖方法以更改其行为。
    在这里插入图片描述
  5. 原始类型的不可变容器: Boolean, Integer, Short, Long, Character, Float, Double

二、静态与动态数据类型检查
Java是一种静态类型的语言。所有变量的类型在编译时(在程序运行之前)都已知,因此编译器也可以推导出所有表达式的类型。如果a和b声明为int,那么编译器得出结论,+b也是int。事实上,Eclipse环境会在编写代码时执行此操作,以便在仍在键字时发现许多错误。
在像Python这样的动态类型语言中,这种检查会被推迟到运行时(当程序运行时)。
一种语言可以提供的三种自动检查:静态检查:在程序运行之前就会自动发现这个错误。动态检查:执行代码时会自动发现错误。不检查:该语言根本不能帮助您查找错误。你必须自己注意,否则就会得到错误的答案。不用说,静态捕获一个bug比动态捕捉它好,而动态捕捉它比根本不捕捉它好。
静态检查意味着在编译时检查错误,静态类型可以防止大量的bug感染程序:确切地说,通过应用操作到错误类型的参数所导致的错误。
静态检查: 语法错误,比如额外的标点符号或假词。即使是像Python这样的动态类型语言也会进行这种静态检查。类名/函数名错误、参数数目错误、参数类型错误、返回值类型错误。
动态检查:非法的参数值、 非法的返回值、越界、空指针。
静态检查往往是关于类型的,这些错误与变量所具有的特定值无关。静态类型可确保变量将具有该集合中的某些值,但直到运行时我们才知道它到底具有哪个值。因此,如果错误仅由某些值引起,如除以零或索引超出范围,那么编译器将不会引发其静态错误。相比之下,动态检查往往是关于由特定值引起的错误的。

三、可突变性和可变不变性
对象是不可变的:一旦创建,它们总是表示相同的值。对象是可变的:它们具有更改对象值的方法。
字符串对象始终表示相同的字符串。由于字符串是不可变的,一旦创建,字符串对象始终具有相同的值。要在字符串的末尾添加某些内容,必须创建一个新的字符串对象。
字符串生成器是可变类型,它有方法删除字符串的部分、插入或替换字符等。此类具有更改对象值的方法,而不仅仅是返回新值。

四、快照图作为代码级、运行视图、运行时和时刻视图
为了理解微妙的问题,绘制运行时发生的图片。快照图表示程序在运行时的内部状态—其堆栈(正在进行的方法及其局部变量)及其堆(当前存在的对象)。
基本类型的值:原始值用裸常数表示。传入的箭头是对变量或对象字段中的值的引用。
对象类型的值:对象值是按其类型标记的圆。当我们要显示更多详细信息时,我们会在其中写入字段名,箭头指向它们的值。有关更多详细信息,这些字段可以包括其已声明的类型。
字符串是不可变类型的一个示例,该类型在创建值后永远不会更改。不可变对象(由其设计者打算始终表示相同的值)在快照图中用双边框表示,如图中的字符串对象。

五、复杂的数据类型:数组和集合
数组是另一种类型T的固定长度序列。例如,如何声明数组变量并构造分配的数组值:int[] a = new int[100];int[]数组类型包含所有可能的数组值,但特定数组值一旦创建,就永远无法更改其长度。
列表是另一种类型T的可变长度序列,List list = new ArrayList();List是一个接口。列表中的成员必须是一个对象。
集合是包含零或多个唯一对象的无序集合。一个对象不能在一个集合中出现多次。要么进去,要么出来。
使用Java集合,我们可以限制集合中包含的对象的类型。添加项目时,编译器可以执行静态检查,以确保只添加适当类型的项目。然后,当我们拿出一个项目时,我们可以保证它的类型将是我们所期望的。
迭代器是一个有步骤地通过元素集合并逐个返回元素的对象。当使用(…:…)循环逐步浏览列表或数组时,在Java中使用迭代器。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值