《Java经典入门指南》课后习题及答案Chapter9
1.使用java.lang.Math类的静态方法可以完成什么工作?
answer: Math类是一个实用工具类,它包含的方法可以完成数学运算的工作。比较重要的方法列示如下:
方法 | 说明 |
---|---|
abs | 返回指定的double数的绝对值 |
acos | 返回一个角度的反余弦,范围为0.0~pi |
asin | 返回一个角度的反正弦,范围为-pi/2~pi/2 |
atan | 返回一个角度的反正切,范围为-pi/2~pi/2 |
cos | 返回一个角度的余弦 |
exp | 返回欧拉数e的制定double次幂的值 |
log | 返回1个double的自然对数(以e为底) |
log10 | 返回1个double的对数(以10为底) |
max | 返回两个double值中较大的一个 |
min | 返回两个double值中较小的一个 |
random | 返回一个大于或等于0.0且小于1.0的伪随机double数 |
round | 将浮点数舍入到最近的整数 |
2.在Java中,既然装箱与拆箱可自动完成,包装器类还有用吗?
answer:java为面向对象编程。在Java当中不可以定义基本类型对象,但是为了将基本类型视为对象处理,并且连接相关方法,Java为每个基本类型提供了包装类,比如int类型数值的包装类为Integer,boolean型数值的包装类为Boolean。通过这样的方式,便可以把基本类型转换成对象来处理。
3.解释为什么不能用double值或float值来执行货币计算。应该用什么来代替?
answer:float和double值都是用二进制位表示的,因此这两种基本类型值是不精确的。
代替方法:(1)使用int或long计算美分(而不是美元或欧元),并将结果转换为美元或欧元。
(2)使用java.math.BigDecimal类。
(3)使用JSR 354参考实现。
4.编写一个名为RangeRandomGenerator的类,它可以在实例化类时指定两个整数,然后生成这两个整数之间的随机整数。
answer:
import java.util.concurrent.ThreadLocalRandom;
public class RangeRandomGenerator {
int a;
int b;
public RangeRandomGenerator(int a,int b){//有参构造
this.a=a;
this.b=b;
ThreadLocalRandom r = ThreadLocalRandom.current();//调用ThreadLocalRandom类的current方法。
System.out.println(r.nextInt(a,b));
}
public static void main(String[] args) {
RangeRandomGenerator rr=new RangeRandomGenerator(1,10);//在main方法中,实例化时指定两个整数。
}
}