1. this和super的区别
1.this和super都代表什么
* this:代表当前对象的引用,谁来调用我,我就代表谁
* super:本类当前对象的父类内存空间标识
2.this和super的使用区别
a:调用成员变量
this.成员变量 调用本类的成员变量,也可以调用父类(本类中没有该变量,继承来的)的成员变量(this.num1)
super.成员变量 调用父类的成员变量(super.num2)
b:调用构造方法
this(...) 调用本类的构造方法
super(...) 调用父类的构造方法
* super(…)或者this(….)必须出现在构造方法的第一条语句上
c:调用成员方法
this.成员方法(...) 调用本类的成员方法,也可以调用父类(本类中没有该方法,继承父类来的)的方法
super.成员方法(...) 调用父类的成员方法
2.重写(overwrite) 和 重载(overload)的区别
重写:
重写(Override)是父类与子类之间多态表现。子类和父类有相同的名
称和参数时,称之为重写 (Override)。子类的对象使用这个方法时,
将调用子类中定义,对它而言,不再继承父类的方法,有了自己的方法,
就好比长大成人自己生活一般。
重载:
重载(Overload)是单个类中多态性的表现。如果在一个类中定义了
多个同名的方法,但是它们参数列表不同,则称为方法的重载(Overload)
区别:重载实现于一个类中;重写实现于子类中,需要有父类作为前提。
3.接口(Interface)与抽象类(Abstract Class)的区别
比较
从定义上看
抽象类是包含抽象方法的类;
接口是抽象方法和全局变量的集合。
从组成上看
抽象类由构造方法、抽象方法、普通方法、常量和变量构成;
接口由常量、抽象方法构成,在 JDK 1.8 以后,接口里可以有静态
方法和方体。
从使用上看
子类继承抽象类(extends);
子类实现接口(implements)。
从关系上看
抽象类可以实现多个接口;
接口不能继承抽象类,但是允许继承多个接口。
从局限上看
抽象类有单继承的局限;
接口没有单继承的限制。
区分
类是对对象的抽象,抽象类是对类的抽象;
接口是对行为的抽象。
若行为跨越不同类的对象,可使用接口;
对于一些相似的类对象,用继承抽象类。
抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类;
接口是根本不知子类的存在,方法如何实现还不确认,预先定义。
4.String、StringBuilder和StringBuffer的区别
1.在执行速度方面的比较:StringBuilder > StringBuffer
2.StringBuffer与StringBuilder,他们是字符串变量,是可改变
的对象,每当我们用它们对字符串做操作时,实际上是在一个对象
上操作的,不像String一样创建一些对象进行操作,所以速度就快了。
3.StringBuilder:线程非安全的
StringBuffer:线程安全的
5.==和equal的区别
1)对于==,比较的是值是否相等
如果作用于基本数据类型的变量,则直接比较其存储的 值是否相等,
如果作用于引用类型的变量,则比较的是所指向的对象的地址是否相等。
其实==比较的不管是基本数据类型,还是引用数据类型的变量,比较的
都是值,只是引用类型变量存的值是对象的地址
2)对于equals方法,比较的是是否是同一个对象
首先,equals()方法不能作用于基本数据类型的变量,
另外,equals()方法存在于Object类中,而Object类是所有类的直接
或间接父类,所以说所有类中的equals()方法都继承自Object类,
在没有重写equals()方法的类中,调用equals()方法其实和使用==的
效果一样,也是比较的是引用类型的变量所指向的对象的地址,不过,
Java提供的类中,有些类都重写了equals()方法,重写后的equals()
方法一般都是比较两个对象的值,比如String类。