Reading 1: Static Checking > Types
原文地址:https://courses.edx.org/courses/course-v1:MITx+6.005.1x+3T2016/courseware/Readings_Videos/01-Static-Checking/
类型
Java和Python最大的人造不同在于其对数字n的定义前表明了其的类型:int。
一个类型是一系列值和伴随这些值的行为(操作)的集合。
Java有一些基本类型,如下:
- int(整数例如5和-200,但是其限制范围是2的31次方,大约2十亿个数)
- long (为了更大的整数,范围增加到2的63次方)
- boolean (true 和 false)
- double (浮点数,代表了一系列实数)
- char (单个字符, 例如 ‘A’ 和 ‘$’)
Java也有对象类型, 例如:
- String 代表一系列字符, 类似Python的string
- BigInteger 代表无限大小的整数,类似于Python的integer
根据Java的传统,基本类型用小写字母,对象类型用大写字母开头。
操作(operations)是输入值再输出值的函数.(一个操作有时候可能会改变输入的值,这也称为可变,我们将在后面的阅读材料中谈到这一点).这些操作的语法各异,但是无论它们是如何写的,我们可以单纯地把它们看成为函数.这里是Java或Python中一个操作的三大语法类型.
- 作为一个中置,前置,后置操作.例如,a + b 触发了操作 +: int * int -> int.
- 作为一个对象的方法.例如, BigInteger.add(BigInteger)触发了add: BigInteger * BigInteger -> BigInteger.
- 作为一个函数,例如: Math.sin(theta) 触发了sin: double -> double.在这里,Math不是一个对象,而是一个包含sin函数的类.
对比Java的str.length()和Python的len(str).在两个语言中,这都是同样的操作--一个函数接受一个str返回一个str--但是它们运用了不同的语法.
一些操作被重载过,就某种意义而言同样的操作名字用于了不同的类型.运算符+-*/在Java的数字原始类型中重度地重载了.方法也能被重载.大部分语言有一定程度的重载.