1.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
类中没有重写toString方法时,打印对象打印的就是地址值,重写后打印的是重写的内容
使用对象名调用或使用输出语句输出对象名的时候,通过该对象调用了其toString()方法。
2.我们为什么要重写equals()方法?
没有重写equals方法时,使用的是从Object类中继承的equals方法,该方法底层使用this与传入的形参==比较,
比较的是地址值,要比较对象的属性相等必须重写equals方法.
3.==和equals()的区别?
==:
比较基本数据类型时,比较的是数据值,比较引用数据类型时,比较的是地址值
equals():
只能比较引用数据类型,没被重写时比较的是地址值
4.String和StringBuilder的区别?
String类型的字符串创建后长度就不可变,底层是一个final修饰的字符数组,进行字符串拼接时较浪费资源
StringBulider创建的字符串长度可变,默认长度为16,随着内容增加长度也会增加
5.什么是包装类,和基本类型有什么区别?什么是自动装箱和自动拆箱?
8种基本类型都有对应的包装类,包装类中有许多操作基本类型数据的方法
自动装箱:
从基本类型转换成包装类时可以自动转换
自动拆箱:
从包装类转换至基本类型时可以自动转换 |