一、面试准备-Java知识

1、String.valueof()、(String)、toString()的区别

答案:

(String)进行转换的时候,如果类型不匹配会抛出类型转换异常。因此在转化的时候如果不确定该类型是否为String类型,需要先用instanceof进行类型判断。

toString()是java.lang.Object类里已有的public方法。在使用时要注意,必须保证object不是null值,否则将抛出NullPointerException异常。toString()不会关注类型的转换,toString()方法返回的是该对象的字符串。

String.valueOf()是String的静态方法,可直接通过String调用。String.valueOf()方法会将非空的对象直接调用其toString方法。但是为空的情况下会返回"null"而不是null。

2、重载(Overload)和重写(Override)

答案:

重载:重载是指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或参数类型不能完全相同。

a.通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法,也就是多态性。

b.返回值类型可以相同也可以不同。不能以返回值类型作为重载函数的区分标准。

重写:重写是存在子父类之间的,子类定义的方法与父类中的方法具有相同的方法名字,相同的参数列表和相同的返回类型。

子类可以继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动的继承父类的方法,而是想做一定的修改。重写又称覆盖。

a.子类中不能重写父类中的final方法但是必须重写父类中的abstract方法。

区别:

方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

3、面向对象特征之一---多态性

答案:

存在多态的前提条件:

a.有继承的关系
b.子类重写父类的方法
c.父类的引用指向子类的对象

多态性是面向对象编程的一种特性,和方法无关。分为静态多态性动态多态性

同样的一个方法能够根据输入数据的不同,做出不同的处理,即方法的重载--有不同的参数列表==>静态多态性

当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,就要重写父类方法,即在子类中重写该方法--相同参数列表,不同实现==>动态多态性

4、String、StringBuffer与StringBuilder之间的区别

答案:

运行速度:StringBuilder>StringBuffer>String

String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。

线程安全:在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的。

String适用于少量的字符串操作的情况。
StringBuffer适用于多线程下在字符缓冲区进行大量操作的情况。
StringBuilder适用于单线程下在字符缓冲区进行大量操作的情况。

5、list、set、map的区别

答案:

list、set都是继承自Collection接口,map不是。

list存放元素有序,可重复。set存放元素无序,不可重复

list查找元素效率高,插入和删除元素效率低。set查找元素效率低,插入和删除元素效率高。

猜你喜欢

转载自www.cnblogs.com/xiaolangzhong/p/10056442.html