Thinking in Java 读书笔记 2

第三章. 控制程序流程

double,float这类浮点数注定不能精确的比较,但是BigDecimal可以提供unscaledValue*10 –scale这样一种形式的浮点数。

位移运算符中增加了无符号的右移运算符>>>。位移运算符如果操作的对象是char,byte,short,那么它们在被位移操作的时候,先被转化为int,运算结果为int类型。

Java中不允许程序员重载运算符,但它默认实现了string+操作。

Java的浮点数在强制转化成整数的时候,总是舍去小数部分。

Math.random()方法生成01间的浮点数,包括0但不包括1

 

一些问题

1.       Java中如何判断对象是否相等?如何判断对象的值是否相等?equals()==有什么区别?

equals()方法是由Object类中定义,目的是为了比较两个对象是否相等,如果需要比较两个对象的值是否相等,需要重写equals()方法,因为Object中默认的实现是比较两个对象的引用(或叫标识)是否指向同一个对象。而这一实现的代码即为:

    public boolean equals(Object obj) {

    return (this == obj);

}

所以说,对象标识之间的==比较的是两个标识是否指向同一个对象。

2.       介绍一下Java中经常使用的literals(字面常量)

0x:十六进制

0:八进制

L:long

F:float

E:10的某此方,12e1即为12乘以101次方

3.       Java中随机数的生成策略是怎样的

 

第四章. 初始化和清理

 

一些问题

1.       Java的垃圾回收机制的运行方式?

参考《Inside Java Virtual Machine》第九章和《Thinking in Java》第四章

第五章. 隐藏实现细节

可以使用Javapackage机制自定义自己的程序库,该程序库可以包含一些常用的算法,和一些常用方法的简化形式,提高编程效率。

一些问题:

1.       为什么要设置访问权限

之所以要设置访问权限,基于两个理由。首先设置访问权限可以禁止使用者触碰到他们本不该看到的内容;其次让程序的设计者可以更改类内部的信息而无需让客户端程序员知晓。

 

第六章. 重复运用Classes

人们无法预测Java中的垃圾回收器何时运行,所以不要把必要的清除工作交给垃圾回收器,程序员需要自己编写清除函数来完成这一功能。在finally块中显示写出以期其必须执行。

Java标准程序库中的VectorHashtable是公认的设计不合理的类。Why?

一些问题:

1.       Java中可以使用final关键字的地方?介绍?

Java中有三处可以使用final关键字,分别是datamethodclass

Final修饰data,分两类:修饰基本类型,修饰对象引用。当修饰基本类型的时候,会给数据预先分配一块无法改变的内存区域。当修饰对象引用的时候,对象的引用无法改变,而对象里具体的内容是可以修改的。

Final修饰method,保证类在继承的时候无法复写final方法;另外final修饰method还会有效率上的考虑,虚拟机会考虑将final方法设成内联的形式:插入某段程序代码以执行调用机制---将参数送入stack、跳至函数代码所在位置并执行、调回并清除stack

Final修饰class,即保证类不能被继承。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值