1.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
在打印时,如果没对toString方法进行重写的话,那会默认使用从Object类继承过来的方法,而此时打印出来的是地址值;
而如果有对toString进行重写的话,那么打印出来的就是对象内容;
想要返回对象的属性内容时,可将其进行调用重写;
2.我们为什么要重写equals()方法?
如果不重写equals()方法,equals会默认使用从Object类继承过来的方法,这样进行比较的两者的地址值,而如果想进行内容的比较就需要进行重写;
3.==和equals()的区别?
==:基本数据,比较数据值;
引用数据,比较地址值;
equals():只能比较引用数据;
重写:比较对象的属性内容;
不重写:比较地址值;
4.String和StringBuilder的区别?
String:底层是被final修饰的数组,是一个不变的常量;
在进行相加时,内存会出现多个字符串,占用多,效率低;
StingBuilder:底层是数组,但没有被final修饰,长度可变;
在进行相加时,在内存中始终是一个数组,占用少,效率高;如果容量超出,则自动扩容;
5.什么是包装类,和基本类型有什么区别?什么是自动装箱和自动拆箱?
包装类:基本数据所对应的引用数据类型;
区别:基本类型的使用方便,但是缺少对应的方法来进行操作;而包装类可以对基本类型进行定义方法,从而进行操作基本数据类型;
自动装箱:即自动进行基本类型转换为包装类的操作;
自动拆箱:即自动进行包装类转换为基本类型的操作;
|