• JAVA面试题总结归纳


    问题一:JAVA的原始数据类型有哪些,它们的大小以及其对应的封装类是什么?

    数据类型 对应大小 对应的封装类
    boolean 1bit,boolean类型单独使用是4个字节,而在数组中又是1个字节 Boolean
    byte 1byte 1字节 Byte
    short 2bytes 2字节 Short
    int 4bytes 4字节 Integer
    long 8bytes 8字节 Long
    float 4bytes 4字节 Float
    double 8bytes 8字节 Double
    char 2bytes  2字节 Character

    问题二:谈一谈"=="和"equals()"区别

    关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系。

    "=="判断的是两个对象的内存地址是否一样,适用于原始数据类型和枚举类型(它们的变量存储的是值本身,而引用类型变量存储的是引用);equals是Object类的方法,Object对它的实现是比较内存地址,我们可以重写这个方法来自定义"相等这个概念"。

    综上,对于枚举类型和原始数据类型的相等性比较,应该使用"==";对于引用类型的相等性比较,应该使用equals方法。

    问题三:Java的四种引用以及其应用场景是什么?

    强引用:通常我们使用new操作符创建一个对象时所返回的引用就是一个强引用。

    软引用:若一个对象只能通过软引用到达,那么这个对象在内存不足时会被回收,可用于图片缓存中,内存不足时系统会自动回收不再使用的Bitmap。

    弱引用:若一个对象只能通过弱引用到达,那么它就会被回收(即使内存充足),同样可用于图片缓存中,这个时候如果Bitmap不再使用就会被回收

    虚引用:虚引用是JAVA中最弱的引用,通过它甚至无法获取被引用的对象,它存在的唯一作用就是当它指向的对象回收时,它本身会被加入到引用队列中,这样我们可以知道它指向的对象何时会被销毁。

    问题四:Object中定义了哪些方法?

    clone()、equals()、hashCode()、toString()、notify()、notifyAll()、wait()、finalize(),getClass();

    问题五:hashCode的作用是什么?

    哈希算法也称为散列算法,是将数据依特定算法直接指定到一个地址上。这样一来,当集合要添加新的元素时,先调用这个元素的HashCode方法,就一下子能定位到它应该放置的物理位置上。

    (1)如果这个位置上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;

    (2)如果这个位置上已经有元素了,就调用它的equals方法与新元素进行比较,相同的话就不存了;

    (3)不相同的话,也就是发生了Hash key相同导致冲突的情况,那么就在这个Hash key的地方产生一个链表,将所有产生相同HashCode的对象放到这个单链表上去,串在一起。这样一来实际调用equals方法的次数就大大降低了。 

     所以hashCode在上面扮演的角色为寻域(寻找某个对象在集合中区域位置)。hashCode可以将集合分成若干个区域,每个对象都可以计算出他们的hash码,可以将hash码分组,每个分组对应着某个存储区域,根据一个对象的hash码就可以确定该对象所存储区域,这样就大大减少查询匹配元素的数量,提高了查询效率。

     

  • 相关阅读:
    Vue之仿百度搜索框
    Vue之交互
    Vue之键盘事件
    Vue之事件冒泡
    Vue之阻止默认行为
    sql注入常用注释符总结
    什么是Git
    Github部署博客
    php笔记
    JavaScript(更新中)
  • 原文地址:https://www.cnblogs.com/longlyseul/p/16642850.html
Copyright © 2020-2023  润新知