java复习第二天
this与super的区别
- 代表事物的不同:
super代表是父类的事物
this代表是所属函数的调用者对象 - 使用前提不同
super必须是继承才可以使用
this不需要继承也可使用 - 构造函数不同
super调用父类构造函数
this调用当前类构造函数
重载与重写的区别
两者都是 java多态的体现,重写发生在父类与子类之间,且要求返回类型相同,传参相同(包括参数个数和参数类型),方法名相同,而重载只要求 方法名相同,其余不做要求,比如构造函数就是标准的重载;重载发生在编译阶段,重写在发生在编写阶段。
String、StringBuilder和StringBuffer
1、可变性:String类中使用final关键字,用的是ptrivate final char value[] 所以String是不可变的,而StringBuilder与StringBuffer继承AbstractStringBuilder类,也是用字符数组保存的字符串,但是没有用final修饰,所以是可变的。
2、String对象是不可变的,所以线程安全
StringBuffer对象是可变的,但是加了同步锁,因此线程也是安全的
StringBuilder对象是可变的,因为没有加同步锁,因此是不安全的
3、性能方面
每次对String改变都生成一个新的对象,而对StringBuffer改变时是对自身的改变,而如果采用StringBuilder虽然性能能提高10%-15%,却要冒着线程不安全的风险。
4、总结
处理少量数据,采用String。
单线程处理大量数据,需要采用StringBuffer.
多线程处理大量数据,需要采用StringBuilder
自动拆箱和自动装箱
自动装箱:把基本的数据类型变换成包装器类型
自动拆箱:把包装器类型变换成基本数据类型
PS:今天较累,就总结那么多吧,明天还要完善论文和整理系统,都十点多了,洗洗睡吧