Java编码规范考试

错题1:

1.关于 BigDecimal, 以下哪些用法是正确的:( )
A. 对于精度有要求的计算,建议使用 BigDecimal ,而不是float, double
B. BigDecimal b = BigDecimal.valueOf(0.199);
C. BigDecimal b = new BigDecimal(“0.29999”);
D. BigDecimal b = new BigDecimal(0.39999f);

正确:ABC
对于D选项,BigDecimal构造函数没有float类型的参数对象,常用有

BigDecimal(int);
BigDecimal(double);
BigDecimal(long);
BigDecimal(String);

BigDecimal类型数据计算方式: https://blog.csdn.net/qq_45904119/article/details/135142888
在这里插入图片描述

错题2:

2.以下关于集合处理说法不正确的是:
A. 使用集合转数组的方法,必须使用集合的toArray(T[] array),传入的是类型完全一样的数组,长度为 0 的空数组。
B. 使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedOperationException异常。
C. 泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用get方法,而<? super T>不能使用add方法,作为接口调用赋值时易出错。
D. 不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。
不正确选项:C

泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用add方法,而<? super T>不能使用get方法,作为接口调用赋值时易出错。Extends Consumer Super)原则:第一、频繁往外读取内容的,适合用<? extends T>。第二、经常往里插入的,适合用<? super T>。

考察多态理解,get子类的父类,不知道是哪个父类,用Object来接收,自己知道去转换;你的父类一定是你子类的父类。

错题3

3.关于内存管理的说法,哪些是正确的
A. 一般情况下都是让对象在退出活动域(scope)后自动设置成null被回收,但对一些复杂的对象,例如数组、队列、树等,可能存在较为复杂的引用关系,GC回收效率一般较低,尽早将其赋值为null可以加速内存回收。
B. finalize函数会加大GC工作量
C. 尽量避免强制内存回收(System.gc()),这会增加系统内存回收的最终时间,降低系统性能
D. 尽量避免在类的构造器中创建、初始化大量对象,主要是为了避免在调用其子类的构造器时造成不必要的内存消耗

ABCD都正确

对于B选项:
finalize()和垃圾回收器的运行本身就要耗费资源, 可能导致程序的暂停;
如果一种未被捕获的异常在使用finalize方法时被抛出,这个异常不会被捕获,finalize方法的终结过程也会终止,造成对象出于破坏的状态。被破坏的对象又很可能导致部分资源无法被回收, 造成浪费;

  • 38
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值