第三章第一节---静态检查和动态检查

静态检查和动态检查

静态检查

  • 语法错误
    • 例如多余的标点符号或者错误的关键词。即使在动态类型的语言例如Python中也会做这种检查:如果你有一个多余的缩进,在运行之前就能发现它。
  • 错误的名字
    • 例如Math.sine(2). (应该是 sin.)
  • 参数个数不对
    • 例如 Math.sin(30, 20).
  • 参数类型不对
    • 例如Math.sin(“30”).
  • 错误的返回类型
    • 例如一个声明返回int类型函数return “30”;

动态检查

  • 非法变量名
    • 例如整型变量x、y,表达式x/y 只有在运行后y为0才会报错,否则就是正确的。
  • 无法表示的返回值
    • 例如最后得到的返回值无法用声明的类型来表示。
  • 越界访问
    • 例如在一个字符串中使用一个负数索引。
  • 使用一个null对象解引用

二者的区别

静态检查倾向于类型错误 ,即与特定的值无关的错误
  • 正如上面提到过的,一个类型是一系列值的集合,而静态类型就是保证变量的值在这个集合中,但是在运行前我们可能不会知道这个值的结果到底是多少。所以如果一个错误必须要特定的值来“触发”(例如除零错误和越界访问),编译器是不会在编译的时候报错的。
动态类型检查倾向于特定值才会触发的错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值