每日三道题2020-12-11

每日三道题(答案在下方)

  1. 说一说Java的Interface和abstract class 的区别?
  2. 说一说String与StringBuffer的区别?
  3. 什么场景下使用BigDecimal类型?
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |
    |

答案

  1. 区别1:
    子类只能继承一个抽象类,不能继承多个
    子类可以实现多个接口
    区别2:
    抽象类可以定义
    public,protected,package,private
    静态和非静态属性
    final和非final属性
    但是接口中声明的属性,只能是
    public
    静态
    final的
    即便没有显式的声明

     注:他们包含如下共同点
     ①:interface和abstract class都不可以被实例化。   
     ②:interface的实现类和abstract class的子类只有全部实现了接口或者抽象类中的方法后才可以被实例化。
  1. String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变 的对象 。
    每次对 String对象的值进行改变的时候其实都等同于生成了一个新的String 对象,然后将指针指向新的 String 对象.而 StringBuffer只会对对象 本身进行操作,而不是生成新的对象,再改变对象引用。

     注:因此经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。
  1. 在商业计算中要用java.math.BigDecimal类。
    因为并不是所有的小数都可以用二进制浮点数精确表示。由于浮点数采用二进制系统表示,而二进制无法精确的表示1/10,好比十进制无法精确表示1/3一样。因此,对于很多值浮点数都是采用其能够表示的离目标值近的数来表示,这有可能会在计算中带来不易察觉的误差。为了解决基本数据类型浮点数不能进行精确计算的问题,Java中专门提供了java.math.BigDecimal类,其提供浮点数的精确计算功能。

     例:double a = 0.02;
         double b = 0.03;
         b-a=0.009999999999999998
     如果使用
         BigDecimal b1 = new BigDecimal("0.03");
         BigDecimal b2 = new BigDecimal("0.02");
         b1.subtract(b2)得到0.01
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值