当前位置: 移动技术网 > IT编程>开发语言>Java > 数据类型与类型检验复习概要

数据类型与类型检验复习概要

2020年07月12日  | 移动技术网IT编程  | 我要评论
  1. Java是静态类型检测,在编译时进行类型检测,在运行时不进行类型检测。动态类型检测(针对具体的值)强于静态类型检测(针对类型)。
  2. final类无法派生子类;final变量无法改变值/引用;final方法无法被子类重写。
  3. Snapshot diagram:描述对象在内存中的分布情况。(Run-time、Moment、Code Snapshot)
    基本类型的值(存储在栈中,基本类型不存储变量名)
    在这里插入图片描述
    对象类型的值(对象的变量名存储在栈中,对象及其属性存储在堆中)
    在这里插入图片描述
    不可变对象:用双线椭圆
    在这里插入图片描述
    可变对象:用单线椭圆
    在这里插入图片描述
    不可变的引用(final修饰):用双线箭头
    在这里插入图片描述
  4. 规约中没有说要对输入的变量做改变,就一定不能改变这些输入的变量。
  5. 规约变强:前置条件更弱(输入变多),后置条件更强(输出更少、更具体),规约图中所占面积更小。
    在这里插入图片描述
  6. 写好规约:内聚,Spec描述的功能应单一、简单、易理解;信息丰富,不能让客户端产生理解的歧义。在规约里使用抽象类型,可以给方法的实现体与客户端更大的自由度。
  7. 抽象数据型:所有属性均为private。
  8. 操作类型:
    (1) 构造器(Creators):其它类型->当前类型
    (2) 生产器(Producers):当前类型->另一个当前类型
    (3) 观察器(Observers):当前类型->其它类型
    (4) 变值器(Mutators):改变对象属性的方法(void方法必然为此类,此类方法不一定是void方法)。
  9. 不变性(Invariant):对属性的约束。表示独立性和避免表示暴露是最重要的Invariant。
  10. AF和RI
    表示空间和抽象空间:
    在这里插入图片描述
    抽象函数AF(Abstraction Function):R和A之间映射关系的函数,即如何去解释R中的每一个值为A中的每一个值(满射,未必单射,未必双射)。
    表示不变性RI(Rep Invariant):某个具体的“表示”是否是“合法的”
    注意:immutable是从抽象空间的角度看的。
  11. 一定关于AF, RI, and Safety from Rep Exposure的典型规约:
    在这里插入图片描述
  12. 多态:特殊多态(方法名多态,即方法名相同,参数不同),参数多态(如泛型),子类型多态
  13. 针对重写:编译阶段根据参数类型来决定一个方法能否执行,运行阶段根据参数实际指向的对象来决定具体调用哪一个方法(父类的还是哪一个子类的)。
  14. 由于泛型擦除,Java中不允许使用泛型数组。如:
    在这里插入图片描述
  15. 从AF和Observer角度判相等:
    在这里插入图片描述
    分别从AF和Observer角度看,以下哪些是相等的:
    在这里插入图片描述
    从AF角度看,1、4相等;
    从Observer角度看,1、3、4相等。
  16. 观察等价性:看起来一样,即Observer方法结果一样(如集合类判相等)。下面是一个出错的情况:
    在这里插入图片描述
    行为等价性:调用对象的任何方法都展示出一致的结果,对于mutable的对象行为等价性就指这两个对象是同一个对象。(mutable对象建议使用此方法,即不需要重写equals方法,直接继承即可)。
    对于Immutable的对象,观察等价性和行为等价性是一样的
  17. Java中,-128~127的Integer对象只有一个。
    例:
    (1) 在这里插入图片描述
    例子中输出true
    当值不在-128~127之间时,输出false。
    (2)
    在这里插入图片描述
    左边false,右边true。

本文地址:https://blog.csdn.net/qq_45110312/article/details/107235466

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网