• java基础面试题


     JVMJREJDK的关系

    java 有哪些数据类型?

    Integer a = 1000,Integer b = 1000,a==b 的结果是什么?那如果 a,b 都为1,结果又是什么?

    Integer a = 1000,Integer b = 1000,a==b 结果为「false」

    Integer a = 1,Integer b = 1,a==b 结果为「true」

    这道题主要考察 Integer 包装类缓存的范围,「在-128~127之间会缓存起来」,比较的是直接缓存的数据,在此之外比较的是对象

     

    创建对象有哪些方式

    • 1、new关键字
    Person p1 = new Person();
    • 2.Class.newInstance
    Person p1 = Person.class.newInstance();
    • 3.Constructor.newInstance
    Constructor<Person> constructor = Person.class.getConstructor();
    Person p1 = constructor.newInstance();
    • 4.clone
    Person p1 = new Person();
    Person p2 = p1.clone();
    • 5.反序列化
    Person p1 = new Person();
    byte[] bytes = SerializationUtils.serialize(p1);
    Person p2 = (Person)SerializationUtils.deserialize(bytes);


    抽象类和接口有什么区别

    • 抽象类要被子类继承,接口要被子类实现。
    • 抽象类可以有构造方法,接口中不能有构造方法。
    • 抽象类中可以有普通成员变量,接口中没有普通成员变量,它的变量只能是公共的静态的常量
    • 一个类可以实现多个接口,但是只能继承一个父类,这个父类可以是抽象类。
    • 接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。
    • 抽象级别(从高到低):接口>抽象类>实现类。
    • 抽象类主要是用来抽象类别,接口主要是用来抽象方法功能。
    • 抽象类的关键字是abstract,接口的关键字是interface

    什么时候使用抽象类和接口

    • 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
    • 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
    • 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
    • 假如有一个接口,五个实现类,现在的需求可能要往接口加一个方法,这样就要改动五个实现类,但需求只需要改动其中两个实现类,可以再定义一个抽象类去实现这个接口,在抽象类中新增这个方法,然后其他两个实现类实现这个抽象类就好了,或者使用 Java 8 中的新特性,在接口中新增默认方法或者静态方法

    static

    static修饰的变量或者方法是优先于对象存在的,也就是说当一个类加载完毕之后,即便没有创建
    对象,也可以去访问

    重载(Overload)和重写(Override)的区别。重载的方法能 否根据返回类型进行区分?

    方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态 性,而后者实现的是运行
    时的多态性。
    重载:发生在同一个类中,方法名相同参数列表不同(参数类型不同、个数不 同、顺序不同),与方法
    返回值和访问修饰符无关,即重载的方法不能根据返回 类型进行区分
    重写:发生在父子类中,方法名、参数列表必须相同,返回值小于等于父类,抛 出的异常小于等于父
    类,访问修饰符大于等于父类(里氏代换原则);如果父类 方法访问修饰符为private则子类中就不是重


    深拷贝和浅拷贝区别是什么?

    • 浅拷贝:仅仅克隆基本类型变量,不克隆引用类型变量;
    • 深克隆:既克隆基本类型变量,又克隆引用类型变量;

    try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?

    常见的异常类有哪些?

    NullPointerException:空指针异常;
    SQLException:数据库相关的异常;
    IndexOutOfBoundsException:数组下角标越界异常;
    FileNotFoundException:打开文件失败时抛出;
    IOException:当发生某种IO异常时抛出;
    ClassCastException:当试图将对象强制转换为不是实例的子类时,抛出此异常;
    NoSuchMethodException:无法找到某一方法时,抛出;
    ArrayStoreException:试图将错误类型的对象存储到一个对象数组时抛出的异常;
    NumberFormatException:当试图将字符串转换成数字时,失败了,抛出;
    IllegalArgumentException 抛出的异常表明向方法传递了一个不合法或不正确的参数。
    ArithmeticException当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。

    待更。。。。。

  • 相关阅读:
    用 tableExcel导出EXCEL数据
    个人作业——软件评测
    结对第二次作业——某次疫情统计可视化的实现
    软工实践寒假作业(1/2)
    java注解和反射
    共享密钥
    鲁棒性验证-第五小组
    维数约减报告--第五小组
    网络1911、1912 D&S第1次作业--线性表批改总结
    网络1911、1912 C语言第4次作业--函数批改总结
  • 原文地址:https://www.cnblogs.com/dingpeng9055/p/16145084.html
Copyright © 2020-2023  润新知