1.程序设计语言中的数据类型
数据类型(type): 一组值以及可以对其执行的操作
例如:Java的基本数据类型
- 整型
byte、short、int、long - 浮点型
float、double - 字符型
char - 布尔型
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 基本数据类型不是真正的数字
先举个例子
整数除法,在编程语言中返回的还是一个整数,而不是我们现实生活中的分数或小数