Java高频面试总结-基础篇(1)
本文章为自己学习期间的总结笔记,如有不足,还请斧正o(*≧▽≦)ツ
1.重写与重载的区别
重载: 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。
重写: 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为private则子类就不能重写该方法。
2.抽象类和接口的区别
- 抽象类中可以没有抽象方法,也可以抽象方法和非抽象方法共存
- 接口中的方法在JDK8之前只能是抽象的,JDK8版本开始提供了接口中方法的default实现
- 抽象类和类一样是单继承的;
- 接口可以实现多个父接口
- 抽象类中可以存在普通的成员变量;
- 接口中的变量必须是staticfinal类型的,必须被初始化,接口中只有常量,没有变量
3.Java中的Exception和Error有什么区别?
- Exception是程序正常运行中预料到可能会出现的错误,并且应该被捕获并进行相应的处理,是一种异常现象
- Error是正常情况下不可能发生的错误,Error会导致JVM处于一种不可恢复的状态,不需要捕获处理,比如说OutOfMemoryError
4.Java中的值传递和引用传递可以解释下吗
- 值传递,意味着传递了对象的一个副本,即使副本被改变,也不会影响源对象。
- 引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对象的改变会反映到所有的对象上。
5.关于 == 、equals方法和hashCode
- ==作用是判断两个对象地址是否相等,即判断两个对象是不是同一个对象(基本数据类型比较的是值,引用数据类型比较的是内存地址)
- equals的作用也是比较两个对象是否相等。如果类没有覆盖equals方法,与==的作用等价;如果类覆盖了equals方法,比较的是两个对象的内容是否相等,若内容相等返回true;
- hashCode() 返回哈希值,而 equals() 是用来判断两个对象是否等价。等价的两个对象散列值一定相同,但是散列值相同的两个对象不一定等价,这是因为计算哈希值具有随机性,两个值不同的对象可能计算出相同的哈希值。
- 在覆盖 equals() 方法时应当总是覆盖 hashCode() 方法,保证等价的两个对象哈希值也相等。
6.static关键字和final关键字
-
静态变量:
又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它。静态变量在内存中只存在一份
-
静态方法:
声明为static的静态方法有以下几个特点:静态方法在类加载的时候就存在了,它不依赖于任何实例。所以静态方法必须有实现,也就是说它不能是抽象方法。
(1)静态方法只能调用静态方法;
(2)静态方法只能访问静态数据;
(3)静态方法不能以任何方式引用this或super(这两个关键字与具体对象关联) ;
-
静态类:
非静态内部类依赖于外部类的实例,也就是说需要先创建外部类实例,才能用这个实例去创建非静态内部类,而静态内部类不需要。静态内部类不能访问外部类的非静态的变量和方法。
-
静态代码块:
静态代码块定义在类中方法外,静态代码块在非静态代码块之前执行(静态代码块—非静态代码块—构造方法)。 该类不管创建多少对象,静态代码块只执行一次.
-
静态倒包:
格式为:import static这两个关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中静态成员,可以直接使用类中静态成员变量和成员方法
//如果只想导入单一某个静态方法,只需要将换成对应的方法名即可 import static java.lang.Math.;//换成import static java.lang.Math.max;具有一样的效果 public class Demo { public static void main(String[] args) { int max = max(1,2); System.out.println(max); } }
存在继承的情况下,初始化顺序为:
- 父类(静态变量、静态语句块)
- 子类(静态变量、静态语句块)
- 父类(实例变量、普通语句块)
- 父类(构造函数)
- 子类(实例变量、普通语句块)
- 子类(构造函数)
final的作用从变量、方法、类三个方面来理解、
-
final修饰的变量的值不能被修改,是一个常量;
-
final修饰的方法不能被重写;
-
final修饰的类不能被继承;
7.深拷贝与浅拷贝
浅拷贝:对基本的数据类型进行值传递,对引用数据类型进行引用传递般的拷贝。
深拷贝:对基本的数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容
上一篇: Python高频面试题及其答案
下一篇: 整理的腾讯面试题及答案