java基础系列:常用API的用法及区别

Posted winterIC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础系列:常用API的用法及区别相关的知识,希望对你有一定的参考价值。

持续更新中。。。。

1.String,StringBuffer与StringBuilder的区别?

  String底层是final修饰的byte数组,属于不可变的对象,但是可以通过反射改变它的值。操作String时会生成新的String对象,不仅效率低下,而且会浪费有限的内存空间。为了应对经常的字符串操作,就引入了StringBuilder类和StringBuffer类。

  StringBuilder与StringBuffer类的方法和功能完全是等价的,都继承于AbstractStringBuilder。StringBuffer是线程安全的,里面的方法大都采用synchronized关键字进行修饰。StringBuilder不是线程安全的。StringBuilder和StringBuffer的字符操作都是通过调用System.arraycopy()来实现的,String的方法是通过new 一个新对象来实现的。三者的速度上:StringBuilder>StringBuffer>String。

2.Round,ceil与floor函数的区别?

   round方法,在Math中有重载的,一个参数是float,一个是double,对应返回int和long值。返回值是当前值+0.5向下取整(-0.5 ---> 0);ceil方法,没有重载,参数就是double,返回值也是double,但是这个时候就有区别了,向上取整(-0.5 ---> -0.0),注意一下,负号是保留的,和round有区别的; floor方法,和ceil一样,没有重载,参数和返回值都是double,向下取整(-0.5 --> -1.0)。

3.System.arraycopy(), clone()和Arrays.copyOf的效率比较?

  arraycopy()是本地方法,clone()也是本地方法,Arrays.copyOf()底层调用的是arraycopy()方法,效率比较:System.arraycopy>clone>Arrays.copyOf()

4.==,obj.equals()和Arrays.equals()方法的比较?

  == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。所以一般可以重写equals方法, 选取"内容"进行比较。

  

以上是关于java基础系列:常用API的用法及区别的主要内容,如果未能解决你的问题,请参考以下文章

基础:yum(RedHat系列)和apt-get(Debian系列 )用法及区别

Java常用术语及区别

java基础(15):常用API(ObjectStringStringBuffer)

Java SE之基础篇——ArrayList类详解

Java集合系列:HashSetLinkedHashSetTreeSet的使用方法及区别

java基础三种循环的使用及区别