《Head First Java》(点击查看详情)
持续更新ing...
类与对象
(p35 到底类和对象两者之间有什么不同?)
类和对象到底有什么区别?类,其实就是用来创建对象的模型。女娲造人,只需要知道是有胳膊有腿的人类就好了(类),至于捏出来的是男人还是女人,高大还是矮小,那又是另一个概念了(对象)。
(p40 Java会拾荒)
对于内存管理,Java是有自动的垃圾回收机制的。每个对象在创建时,会放置在堆上并接受监控,一旦发现其没有引用时,则被视为垃圾,最终被清理回收。
认识变量
(p50 声明变量)
Java中的变量有两种类型:primitive主数据类型(即我们常说的基本数据类型)和引用。不论是哪种数据类型,在Java面前都要求严格遵守它的管理规则,不允许类型之间的胡乱转换,比如是绝不会允许把长颈鹿类型变量放进兔子类型变量中去。接下来我们就来分别认识这两种数据类型,和他们之间的一些变换规则。
primitive主数据类型
(p51 primitive主数据类型和引用)
变量就像杯子,不同的数据类型,往往代表了它们杯子不同的大小容量。这个大概是我目前认识到的最生动贴切的比喻了,因为这让我完全记住了类型之间的转换。
我们都知道,基本数据类型之间的运算是存在类型转换的,特别是自动转换,其实在运算是有以下规则(由低到高转换):
- 所有的byte、short、char型的值将被提升为int型;
- 如果有一个操作数是long型,计算结果是long型;
- 如果有一个操作数是float型,计算结果是float型;
- 如果有一个操作数是double型,计算结果是double型。
为什么呢?就像书中所说的一样,编译器为了确保变量能存下所保存的值。就像你小杯的茶叶和大杯的茶叶倒进另外一个杯子里,那么为了避免溢出来,自然这另一个杯子要选择大的。

对象引用
(p54 primitive主数据类型和引用)
Dog dog = new Dog();
如上,我们都知道基本数据类型的变量,实际上,是没有对象变量这种说法的,只有引用到对象的变量。也就是说,这里的dog,并不是对象的容器,而是类似指向对象的指针,或者说是地址(如果你还不明白,你可以想象真正的对象是一个宾馆房间,而这里的变量就是对应的房间号门卡)
之前我们比喻说,基本数据类型是大小不同的杯子,而这里,实际上是没有超巨大的被子来装载对象的,对象只会存在于可回收垃圾的堆上。

虽然没有杯子可以承载直接的对象,但是还是可以用来放“遥控器”的,你要记住的是,对象本身并没有放进变量中,而是放入了可以远程控制对象的遥控器!
《Head First Java》读书笔记
原文:http://www.cnblogs.com/deng-cc/p/6507528.html