软件构造复习(3.1)

3.1数据类型和类型检验

3.1.1数据类型

  1. 基本数据类型(8种)
    int, long, byte, short, char,float, double, boolean
  2. 对象数据类型
    如:String、BigInteger

两者对比:
在这里插入图片描述ps:将基本类型包装为对象类型,如:Boolean,Integer,Short,Long,Character,Float,Double通常是在定义集合类型的时候使用它们,一般情况下避免使用。

3.1.2静态、动态数据类型检查

静态类型语言,如java,在编译阶段进行类型检查,动态类型语言如python在运行阶段进行检查。

  1. 静态类型检查,在编译阶段检查,避免了将错误带入到运行阶段,可提高程序的正确性/健壮性。可检测的错误包括:语法错误、类名/函数名错误,参数数目错误,参数类型错误,返回值类型错误。
  2. 动态类型检查在运行阶段检查。可检测的错误包括:非法的参数值、非法的返回值、越界、空指针。
    总结:静态检查是关于“类型”的检查,不考虑值,而动态检查,是关于“值”的检查。

3.1.3可变性和不变性

改变一个变量和他的值的区别:
改变一个变量:将该变量指向另一个值的存储空间
改变一个变量的值:将该变量当前指向的值的存储空间中写入一个新的值。

不变数据类型:

  1. 一旦被创建,其值不能改变
  2. 如果是引用类型,也可以是不变的:一旦确定其指向的对象,不能再被改变。
    Ps: 用final声明,可以让引用不可变。(静态检查时,如果无法确定final变量不会改变,会提示错误)因此要尽量使用final变量作为方法的输入参数。
    final:
    • final类无法派生子类
    • final变量无法改变值/引用
    • final方法无法被子类重写

可变数据类型和不可变数据类型:
在这里插入图片描述 尽管不可数据类型,进行copy,会比较麻烦,性能表现不是很好,但是在表现和性能上折中,应更看重安全。
而局部变量则可以放心的使用可变类型,因为不会涉及共享,只有一个引用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值