05.Java中equal和==的区别是什么
equal和"=="两者均为表示相等的意思,但是它们相等的含义却有所区别。
- "=="运用在基本数据类型的时候,通过比较它们实际的值来判定是否相同;而用于比较引用类型的时候,则是比较两个引用的地址是否相等,也就是是否指向同一个对象。
- equal方法是java.lang.Object的方法,也就是所有的Java类都会有的方法。它可以被程序员覆盖重写,通过自定义的方式来判定两个对象是否相等。对于字符串java.lang.String类来说,它的equal方法用来比较字符串的字符序列是否完全相等。
06.请介绍Java中静态成员的特点
类的静态成员是通过static关键字修饰的成员,主要包括:静态成员变量、静态方法和静态代码块,它们具有以下一些特点。
- 在类加载的时候,就可以创建和初始化或执行代码。
- 它们对于一个类来说,都只有一份。
- 类的所有实例都可以访问到它们。
07.简述接口和抽象类的区别
抽象类是一种功能不全的类,接口只是一个抽象方法声明和静态不能被修饰的数据的集合,两者都不能被实例化。从某种意义上说,接口是一种特殊形式的抽象类,在Java语言中,抽象类表示一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
-
抽象类
- 抽象类和抽象方法必须用abstract关键字修饰
- 抽象类中不一定有抽象方法,但有抽象方法的类必须定义为抽象类
- 抽象类有构造方法,但是不能实例化(构造方法用于子类访问父类数据的初始化)
- 抽象类的子类是一个抽象类,可以不重写父类抽象方法
抽象类的子类是一个具体类,必须重写父类抽象方法
-
接口
- 接口用关键字interface表示
- 类实现接口用implements表示
- 接口不能实例化
- 接口的子类可以是抽象类,但是意义不大
具体类实现接口,要重写接口中的所有抽象方法。
08.简述一下内部类的实质是什么
内部类根据定义的情况可以分为以下4种
- 静态内部类:它相当于外部类的静态成员一样,使用static修饰的内部类,它隶属于外部类,使用起来相当于一个独立的外部类。
- 成员内部类:它相当于外部类普通的成员一样,隶属于外部类的具体对象,在定义它的时候,需要先创建外部类对象,再创建它的实例。
- 局部内部类:它定义在一个方法的方法体中,它往往仅作为方法短暂的使用,只能访问用final修饰的局部变量。
- 匿名内部类:它也定义在方法体中,但是它没有一个具体的名字,具有非常大的灵活性,工作本质与局部内部类类似。