软件构造(四) 数据类型与类型检验

本文探讨了程序设计语言中的数据类型,包括Java中的静态和动态数据类型检查,如类型转换、静态与动态检查。强调了基本数据类型在编程中的特性,并对比了静态检查和动态检查的优劣。同时,文章还讨论了可变性和不变性在软件构造中的重要性,以及数组、列表、集合和Map等复杂数据类型的使用。
摘要由CSDN通过智能技术生成

1.程序设计语言中的数据类型

数据类型(type): 一组值以及可以对其执行的操作
例如:Java的基本数据类型

  1. 整型
    byte、short、int、long
  2. 浮点型
    float、double
  3. 字符型
    char
  4. 布尔型
    boolean

变量(Variables): 存储特定类型值的命名位置

接上面Java的数据类型,Java还有对象数据类型(例如:Classes,interfaces, arrays, enums,annotations),它在堆中分配空间,可以可变也可以不可变,相对于基本数据类型更加灵活,但是所占的空间更多。对象数据类型之间通过继承等形成了层次结构。

而在Java中基本数据类型也被包装成了对应的对象数据类型

操作符(Operators): 执行简单计算的符号

例如:+、-、*、/、=

自然,操作符要遵循标准的数学规则

操作(Operations): 是接受输入并产生输出(有时改变值本身)的函数

例如:a + b、Math.sin()……

2.静态和动态数据类型检查

2.1 类型转换

以Java举例

byte,short,char—>int—>long—>float—>double

由低到高,可以进行自动类型转换
由高到低,要进行强制类型转换,但精度会有损失

boolean不能进行类型转换

2.2 静态和动态数据类型

在静态类型语言(Java)中,所有变量的类型在编译进行检查

而在动态数据类型(python)中,在运行时进行变量检查

2.3 静态检查和动态检查

一般有三种自动检查:

  • 静态检查(Static checking):在程序运行之前会自动发现错误
  • 动态检查(Dynamic checking):执行代码时自动找到该错误
  • 无检查(No checking):就是你自己查

从效果来说,静态 > 动态 > 无检查

2.3.1 静态检查

静态检查往往是关于数据类型的错误,它保证变量将具有该集合中的某个值,但直到运行时我们才确切知道它具有哪个值。

有以下几种典型的静态检查:

  • 语法错误(动态类型语言也会进行这种静态检查)
  • 类名/函数名错误
  • 参数数目错误
  • 参数类型错误
  • 返回值类型错误

2.3.2 动态检查

动态检查往往是由特定值引起的错误,如被零除或索引超出范围

有以下几种典型的动态检查:

  • 非法的参数值
  • 非法的返回值
  • 越界
  • 空指针

2.4 基本数据类型不是真正的数字

先举个例子

整数除法,在编程语言中返回的还是一个整数,而不是我们现实生活中的分数或小数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值