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最大的人造不同在于其對數(shù)字n的定義前表明了其的類型:int还惠。
一個(gè)類型是一系列值和伴隨這些值的行為(操作)的集合交胚。
Java有一些基本類型,如下:
- int(整數(shù)例如5和-200,但是其限制范圍是2的31次方,大約2十億個(gè)數(shù))
- long (為了更大的整數(shù),范圍增加到2的63次方)
- boolean (true 和 false)
- double (浮點(diǎn)數(shù),代表了一系列實(shí)數(shù))
- char (單個(gè)字符, 例如 ‘A’ 和 ‘$’)
Java也有對象類型办成, 例如:
- String 代表一系列字符, 類似Python的string
- BigInteger 代表無限大小的整數(shù)搂漠,類似于Python的integer
根據(jù)Java的傳統(tǒng)迂卢,基本類型用小寫字母,對象類型用大寫字母開頭。
操作(operations)是輸入值再輸出值的函數(shù).(一個(gè)操作有時(shí)候可能會改變輸入的值,這也稱為可變,我們將在后面的閱讀材料中談到這一點(diǎn)).這些操作的語法各異,但是無論它們是如何寫的,我們可以單純地把它們看成為函數(shù).這里是Java或Python中一個(gè)操作的三大語法類型.
- 作為一個(gè)中置,前置,后置操作.例如,a + b 觸發(fā)了操作 +: int * int -> int.
- 作為一個(gè)對象的方法.例如, BigInteger.add(BigInteger)觸發(fā)了add: BigInteger * BigInteger -> BigInteger.
- 作為一個(gè)函數(shù),例如: Math.sin(theta) 觸發(fā)了sin: double -> double.在這里,Math不是一個(gè)對象,而是一個(gè)包含sin函數(shù)的類.
對比Java的str.length()和Python的len(str).在兩個(gè)語言中,這都是同樣的操作--一個(gè)函數(shù)接受一個(gè)str返回一個(gè)str--但是它們運(yùn)用了不同的語法.
一些操作被重載過,就某種意義而言同樣的操作名字用于了不同的類型.運(yùn)算符+-*/在Java的數(shù)字原始類型中重度地重載了.方法也能被重載.大部分語言有一定程度的重載.