java基础面试题(一)附答案

java基础面试题(一)附答案

  1. Java语言有哪些优势?

    1. java是面向对象编程的
    2. java具有可跨平台性
    3. 可以进行网络编程
    4. 执行方式采取解释执行和编译执行并存方式
  2. java中常见的基本数据类型都有什么?包装类都是什么?各占多少字节?

    1. byte BYTE 1字节
    2. short SHORT 2字节
    3. int Integer 4字节
    4. long Long 8字节
    5. float Float 4字节
    6. double Double 8字节
    7. char Character 2字节
    8. Boolean
  3. == 和equals的区别是什么?

    1. ==是逻辑运算符 ;
      1. 基本数据类型使用是比较值大小,
      2. 引用数据类型比较内容
    2. equals是Object类中的方法;
      1. 基本数据类型不能使用,
      2. 引用数据类型比较地址(String类),如果没有重写此方法,则还是比较内容;
  4. &和&&的区别是什么?

    1. &是位运算符,
      1. 数值进行运算时将数字转换为二进制,然后进行与运算(同1位1,否则为0);
      2. &符号是不短路与运算 a&b 不管a是否为false,b照样可以执行
    2. &&是逻辑运算符
      1. &&是短路与运算
  5. 关于HashCode你怎么理解?

    HashCode是是Object类的本地native方法,底层是使用C语言/C++实现的,是获取该对象的哈希码;HashCode码是该对象的内存地址通过hash方法计算出的值,表示该对象在hash表中的位置,用于该对象的方便查找,可以快速定位该对象的位置;使用HashCode方法,可避免equals方法的频繁使用

  6. 请你说一下String、StringBuffer和StringbBilder的区别和使用

    String、StringBuffer和StringbBilder用于保存数据的字符集合,

    1. String类是不可变的,在jdk1.8使用的是private final char[] value来保存字符,在jdk1.9使用private final byte value[]来保存字符;

      String使用保存一些更改次数较少的字符,因为不同的字符串都会产生一个新的对象,对性能和开销都很大

    2. StringBuffer和StringbBilder类也是保存字符,但他们俩个是可以对字符进行修改的

      StringBuffer和StringbBilder都继承的是AbstractStringbBilder父类,它没有对方法进行final修饰,所以是可以更改的,修改的是字符串本身, 用于一些经常修改的字符串

  7. 说一说你对final关键字的理解

    final关键字修饰的都是最终的

    1. 修饰一个类表示该类不能被继承

    2. 修饰一个方法表示该方法不能被重写

    3. 修饰变量

      修饰一个常量表示常量不可变

      修饰一个引用变量表示引用的地址不能发生变化

  8. final、finally、finalize的区别是什么?

    1. final关键字修饰的都是最终的
    2. finally是异常处理的最终一定执行的部分,一般搭配try或者catch使用
    3. finalize是Object类的方法,是垃圾回收的相关方法,启动垃圾回收器会执行此方法
  9. 访问修饰符都是哪些?作用范围?

    访问修饰符都有

    private 私有的作用范围是当前类

    protected 受保护的作用范围是本包或者子类

    default 默认的(友好的)同一个包下的

    public 公共的作用范围是所有包都可访问

  10. 为什么重写equals方法时候需要重写HashCode方法?

    equals()方法和HashCode()方法两者的符合两个关系

    1. 当两个对象相同时(equals方法返回值为true),则两个对象的HashCode的一定相同

    2. 当两个对象的HashCode相同时,但这两个对象并不一定是同一个(比如“重地”和“通话”,HashCode值相同,但是是两个对象)

      综上所述:任意覆盖了equals方法的类一定覆盖了hashCode方法,反之就违背了Object.HashCode的约定,会使该类和其他基于散列的集合(HashTable、HashMap)不能正常运作

    3. 另外可以避免equals方法被频繁调用,提高性能;且hashCode计算是(n-1)&HashCode位运算,相对是比较快的。

猜你喜欢

转载自blog.csdn.net/weixin_44641846/article/details/114981016