数据类型与类型检验

目录

一、数据类型

二、检查

三、可变性与不可变性

四、Snapshot diagram

五、数组和集合


一、数据类型

类型:基本数据类型、对象数据类型

对象形成层次结构——Java类单亲继承、C++类可多亲继承

重载:同样的操作名可用于不同的数据类型

二、检查

静态检查:java中所有变量的类型在编译时是已知的,因此编译器可以推断所有表达式的类型(在编译阶段进行类型检查);静态类型检查可以在编译阶段发现错误,避免将错误带入运行阶段,提高程序正确性/健壮性

动态检查:在运行时检查,主要检查值(非法参数值、非法返回值、越界、空指针

三、可变性与不可变性

赋值:将一个计算结果放到一个存储空间中,是一个存储过程

改变一个变量:将该变量指向另一个值的存储空间

改变一个变量的值:将该变量当前指向的值的存储空间中写入一个新值

(尽可能避免变化,避免副作用)

不变性——重要设计原则

不变数据类型:一旦被创建,其值不能改变

(使参数为不变的——用关键字final声明)

final:final类无法派生子类、final变量无法改变值、final方法无法被子类重写

不变对象:一旦被创建,始终指向同一个值(String)

可变对象:拥有方法可以修改自己的值(StringBuilder)

使用不可变类型,对其频繁修改会产生大量的临时拷贝(需要垃圾回收)

但不可变类型更安全,在其他质量指标上表现更好

可变类型最少化拷贝以提高效率

使用可变数据类型可获得更好的性能,也适合在多个模块之间共享数据

安全使用可变类型:局部变量、不会涉及共享、只有一个引用

四、Snapshot diagram

用于描述程序运行时的内部状态,便于程序员之间的交流,用于刻画各变量随时间变化,便于解释设计思路

五、数组和集合

array、list、set、map

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值