欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java高频面试总结-基础篇(1)

程序员文章站 2022-05-06 16:50:12
...

本文章为自己学习期间的总结笔记,如有不足,还请斧正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.深拷贝与浅拷贝

浅拷贝:对基本的数据类型进行值传递,对引用数据类型进行引用传递般的拷贝。

深拷贝:对基本的数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容

相关标签: Java java