java中常见的几组区别

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类。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页