變量、值,體會二者的關係
值分爲:基本值
、對象值
,在工作中我們口語交流:這個變量是不是基本類型的呀?
我們可以創建一個變量,這個過程叫做:變量聲明
。然後可以把變量和值關聯起來,這個過程叫做:賦值
。
變量和對象值的關係是:引用
,在C語言中我們叫做指針
,廣大程序員都對指針有恐懼感,故Java換了個名字叫做引用。
不可變的概念
如果變量自己是不變的,這時候叫做:不可變變量
也叫常量
。
如果變量的值是不變的,這時候叫做:不可變值
。
國內學生都有C語言基礎,考大家下面代碼的區別:
const float PI = 3.1415;
float * a = Π
const float * b = Π
float const * c = Π
float * const d = Π
float const * const e = Π
同樣的問題換成Java來考如下(看來Java還真比C簡單):
int a = 5;
final int b = 5;
String s = "ab";
StringBuilder sb = new StringBuilder("ab");
快照圖(snapshot diagrams)
快照圖是MIT本科教育中,爲了便於理解而專門創造的一種圖。不僅僅是這門課,MIT後續課程中也都會沿用快照圖。下面看看快照圖如何幫助我們理解不可變的概念。
數組、集合類型
每個語言都有集合類型,用來存放一堆數據,集合類型有時也叫做容器類型(避免跟數學中的集合混淆)。容器類型大致分爲這幾種。
容器類型 | Java | Python |
---|---|---|
有序的 | List | list |
無序的 | Set | set |
鍵值對 | Map | dictionary |
由於容器類型是很常用的,即使大家現在不掌握,以後也會反覆用到,不擔心大家學不會,這裏就不多介紹了。
字面量
這裏要體會“兩個世界”模型:程序員看到的世界、計算機內部的世界。
字面量
位於程序員看到的世界,值
位於計算機內部是程序員看不到的。
Java中容器類型的字面量語法
並不是所有值都能用字面量來表示,Java的字面量表達能力比Python要弱上不少,這就導致Java代碼寫起來比Python更加麻煩。