首页 > 人生哲理名言 > 人生语录 > 语录 > Thinking in Java 经典语录推荐

Thinking in Java 经典语录推荐

   来源:文萃都    阅读: 2.45W 次
字号:

用手机扫描二维码 在手机上继续观看

手机查看

1. Booch对对象的简单描述为:对象具有状态、行为和标识。这意味着每一个对象都可以拥有内部数据(给出了该对象的状态)和方法(给出了该对象的行为),并且每一个对象都可以唯一地与其他对象区分开来。

Thinking in Java 经典语录推荐

2. Java里一切都是对象,但操作的标识符实际上是对象的一个“引用”,就好比遥控器(引用)和电视机(对象)的关系。你只要握住这个遥控器就可以控制电视机。当你想调音量或者换频道的时候,实际操控的是遥控器,再由遥控器来调控电视机。如果想在房间里四处走走仍能遥控电视机,那么只要携带遥控器而不是电视机。此外,即使没有电视机,遥控器仍然可以单独存在,也就是说你可以拥有一个引用,而不一定需要一个对象与之关联,如?:String s;是允许的,但是如果这时候你要控制电视机,如od()就不允许了,因为没有电视机和你这个遥控器关联,所以使用之前必须初始化,即找到一台电视机与之关联。

3. Java内存分配:

① 寄存器:最快的存储区,java里你是不能控制的,略去!

② 堆栈:存放了对象引用,但是对象不存储在这里;

③ 堆:用于存放所有的java对象;

④ 常量存储:可以选择将常量存储在ROM里;

⑤ 非RAM存储:基本例子:流对象和持久化对象。后者存放在硬盘上。

4. 方法名和+参数列表=方法签名,用于唯一的标识某个方法。

5. A a = new A(); a.f();这种调用方法的行为通常被称为发送消息给对象,消息是f(),对象是a,在java里简单的归纳为“向对象发送消息”。其实在java内部表示为A.f(a,1),而A b = new A(); b.f();b.f();为A.f(b,2),这样把“操作对象的引用”作为第一个参数传进去的'原因是可以区分f()是被a调用还是b调用了。

6. 当声明一个事物是static时,就意味着这个域或方法不与包含它的那个类的任何对象实例关联在一起,属于类而不是对象。有些面向对象语言里称之为“类数据”和“类方法”。

7. 比较常量用==,比较对象可不是简单的equals()。Equals()默认比较的是引用,要想比较内容需重写equals()方法,好在java类库大部分都实现了自己的equals()。

8. java不需要sizeof()操作符来告诉为数据项分配的字节数,因为所有数据类型在所有机器中的大小都是相同的。

9. java里逗号的两大用处:分隔参数列表(叫“逗号分隔符”),for循环的初始化和步进控制部分(叫“逗号操作符”)。

10. java里的switch后跟选择因子只能为:int、char、枚举(千万别忘了!)。

11. 通过构造器,类的设计者可以确保每个对象都会得到初始化(即使你不写,也有默认的

空构造器)。也是由于构造器的存在,所以“每个方法首字母小写”的编码风格并不适用于构造器(因为它必须和类同名啊,呵呵~!)。

12. 为什么区分方法重载是看参数(个数、顺序、数据类型)而不看返回值类型了,因为唯 一区别方法的是方法签名(方法名+参数列表),现在方法重载所以方法名肯定相同了,就只要看参数列表了。

13. 在static方法内部是不能调用非静态方法的,反过来倒是可以的。但是有点变态的是,

并不是完全不能调用非静态方法的,比如传一个对象的引用到静态方法里,你是不是无语了。

14. 当说到java 的垃圾回收机制的时候,总喜欢套用官话“引用计数”,即当有引用关联到

这个对象时,其引用计数+1,当引用离开作用域或者置为null时,引用计数-1,当计数为0的时候就回收这个对象占的内存。其实并不是这样的,没有任何一种java虚拟机是这样做的,因为这种方法有种缺陷就是存在循环引用的时候,就存在“对象本应回收,但是引用计数又不为0”的情况。其实在java虚拟机里,采用的是“自适应”的垃圾回收机制,采用“停止-复制”和“标记-清扫”的混合技术。“停止-复制”就是暂停程序的执行,找到存活的对象并复制到另外一个堆,再干掉这个堆,所以存在大量的数据迁移。“标记-清扫”是找到存活的对象并加以标记,等全部标记完后再清扫。

15. 复用类的方法:组合、继承、代理。组合(has-a)最灵活,继承(is-a)最强求且最危

险,因为全部暴露给了子类,为了安全就出来了代理(实现一个子集即可),所以“代理是继承和组合的中庸之道”。请记住,还有一个中庸之道,就是“抽象类是普通类和接口的中庸之道”,慢慢品尝吧!

16. 将导出类转型为基类,称为“向上转型”,因为在继承图上是向上移动的,懂吗?呵呵~!

17. 所谓的动态绑定、后期绑定、运行时绑定就是多态!

18. 将一个方法调用同一个方法主体关联起来被称作绑定。后期绑定就是运行时根据对象的类型进行绑定。后期绑定也叫做动态绑定或运行时绑定。Java中除了static方法和final方法(private方法属于final方法)之外,其余的都是后期绑定。

19. 一个接口表示“所有实现了该特定接口的类看起来都像这样”。接口被用来建立类与类之间的协议,有些面向对象的语言直接使用protocol关键字来实现。