美文网首页程序员
Java基础面试题

Java基础面试题

作者: 茶礼宜世 | 来源:发表于2019-11-05 16:13 被阅读0次
    1. 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

    引用不能变,引用的对象内容可以变

    2. 静态变量和实例变量的区别

    实例变量属于对象的属性,必须被创建实例对象后才会分配内存空间,才能被使用。而静态变量属于类的属性,在类被虚拟机加载之后,就已经分配内存空间了,不用创建任何对象实例,就可以直接使用。

    3. Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

    Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行向下取整。
    所谓向上取整指当计算的结果不为整数时取大于计算结果的整数,向下取整指当计算的结果不为整数时取小于计算结果的整数.当计算结果为整数时直接取整数

    4. Overload和Override的区别?Overloaded的方法是否可以改变返回值的类型?

    (1)重载Overload:表示同一个类(包含子类继承父类的所有方法在内)中可以有多个名称相同的方法,但这些方法名称相同,参数列表各不相同(即参数个数、参数类型、参数顺序必须有一个不同),返回类型可以不相同,异常也可以不相同。
    (2)重写(覆盖)Override:表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。但是,子类方法和父类方法,名称和参数列表(包括类型、个数、顺序)必须相同,子类访问权限和父类一致或者比父类更大,子类的返回类型和父类一致或者是父类的子类型,子类抛出的异常和父类一致或者是父类的子异常。

    5. java中实现多态的机制是什么?

    方法的重写Overriding和重载Overloading是Java多态性的不同表现.
    重写Overriding是父类与子类之间多态性的一种表现
    重载Overloading是一个类中多态性的一种表现.

    6. abstract的方法是否可同时是static,是否可同时是native,是否可同时是synchronized?

    都不可以

    7. equals()和hashCode()的关系

    (1)equals()和hashCode()是Object类的两个方法,equals()是通过“==”对两个对象进行比较,即对引用地址的比较;hashCode()是通过对象存储地址来计算的;
    (2)equals()和hashcode()必须遵守以下规则:
    覆盖equals()方法,就必须覆盖hashCode()方法,因为在HashMap等集合中的key,都依赖这两个方法。
    如果两个对象执行equals()方法是相等的,那么执行hashcode()方法的结果也必须是相等的;
    如果两个对象执行equals()方法不相等,那么执行hashcode()方法的结果可以相等页可以不相等。
    (3)覆盖equals()方法的规则
    做this检查,如果obj是this,则返回true;
    做null检查,如果obj是null,则返回flase;
    做getClass()检查,如果不属于同个类,则返回flase;
    转换类型,将obj对象转换为指定类型对象
    对对象的属性,根据业务逻辑进行比较

    8. String、StringBuilder 和 StringBuffer 比较

    运算速度比较(通常情况下):StringBuilder > StringBuffer > String
    (1)String
    使用final修饰,不能被继承,通常情况下效率较低,适用于少量字符串操作
    (2)StringBuilder
    线程不安全,效率最高,适用于单线程下在字符串缓冲区进行大量操作
    (3)StringBuffer
    线程安全,效率比StringBuilder低,适用于多线程下在字符串缓冲区进行大量操作

    陆续更新...

    相关文章

      网友评论

        本文标题:Java基础面试题

        本文链接:https://www.haomeiwen.com/subject/rwqebctx.html