show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次我们编写了一个加法运算程序
- 明了 胜于 晦涩
- explicit is better than implicit
- 指的是变量类型 要明了
- 难道还有变量类型晦涩的情况??🤔
- 类型可以隐式转化
- F12调出浏览器的调试器
- 在js的控制台里面输入
1 + "2"
- 结果是
- 1 被隐式地转化为字符串类型了
- 数据的类型 会
自动
转化?!🤫
- 数据的类型 会
- javascript 这种
自动
转化类型的语言- 就是 弱类型的语言
- weakly typed
- 和弱相对的是强
- strongly typed
- 比如python
- 讲究 明了大于晦涩
- 不能自动转化
- 与强类型、弱类型这个维度类似的是
- 动态语言 、 静态语言
- Dynamic、static
- 这如何理解?
- 编写一个test.py
age = 1
print(age, type(age))
age = "1"
print(age, type(age))
- 运行结果
-
age变量 的类型
- 从 整型数字
- 转变为 字符串
-
同一变量名age 指向的类型
- 可以从整型数字
- 变
动
到 字符串 - 就是
动
态类型
-
python 是 一门
动态
类型语言
-
那有没有
静
态类型呢?!
- 老前辈 c语言
- 就是静态类型的
void main(void){
int age = 1;
char age = '1';
}
- 编辑 test.c
- :w|!gcc %
- 保存并且
- 用外部命令gcc 编译当前文件
- test.c中声明了
- age 是 整型变量
- 不能 再将
- 字符类型'1'
- 赋给变量age
- 变量类型
一旦
被声明- 就不能动了
- 这就是
静
态类型
- c 是 一门
静态
类型语言
- 变量类型 是
- 编程语言的核心
- 静态类型
- 声明类型 之后
- 数值 可以改变
- 类型 不再改变
- 提高效率
- 需要在编程前思考清楚
- 类型错了
- 编译都无法通过
- 声明类型 之后
- 动态类型
- 声明之后
- 类型 还可以改变
- 自主灵活
- 但 容易忘记 变量类型
- 导致 出错
- 声明之后
- 如果你是变量
- 你愿意 一辈子一个类型 数值变化
- 还是 一辈子 可以在各种类型之间切换?
- 动态类型语言里
- 解释脚本类居多
- 类型 不需要编译
- 全靠 解释器
- 就能解释得通 就行
- 全靠 解释器
- 自由 散漫
- 不怎么 追求明确
- 这种灵活性
- 导致python
- 跑起来很容易
- 而且
- 容易 和各编程语言 配合
- 导致python
- 这就是 python 被叫做
- 胶水语言(glue Language)的原因
- 越讲求效率
- 越静态 严格约束
静态 | 动态 |
---|---|
c | python |
rust | javascript |
java | ruby |
- 越灵活
- 越讲求开发速度
- 越动态
- 强类型语言
- 不允许隐式的类型转换
- 为什么 c是
弱
类型?
- 因为c 很严格
- 有好几档整型变量
- 短整型、整型、长整型...
- 对应不同字节
- 支持自动转化
- 所以是弱类型
- c语言并不是纯粹的强类型或弱类型语言
- 而是介于两者之间
- 某些方面表现出强类型的特性
- 显式类型声明
- 严格的类型检查
- 在其他方面则表现出弱类型的特性
- 隐式类型转换
- 灵活的指针类型转换
- 这次 分辨了 语言类型
- 静态类型、动态类型
- 强类型、弱类型
- python
- 属于
动态类型
、强类型
语言 - 对 初学者很友好
- 类型 容易 混淆
- 属于
- 整型变量(int) 为什么叫做 int 呢?🤔
- 下次再说!👋