• Java面试2


    Java基础

    在 Java 中,如果我们没有为局部变量指定任何值,那么局部变量的 默认值是什么?

    Java 不会使用任何默认值初始化本地变量。所以这些变量在默认情况下只会为 空。 比方说,我们运行一个 java 类而不传递任何参数。

    Main 方法中参数 的 String 数组的值是什么?

    默认情况下,参数的 String 数组的值在 Java 中为空。它不是 null。

    Java 中的 byte 和 char 数据类型有什么区别?

    Java 中的 byte 和 char 都是数字数据类型。它们被用来表示特定范围内的数 字。 它们之间的主要区别是一个字节可以存储原始二进制数据,其中 char 存储字符 或文本数据。 char 的用法是例如 char ch ='x'; 字节值的范围从-128 到 127。 一个字节由 8 位组成。但是一个字符是由 16 位组成的。所以它相当于 2 个字 节

    4. HashMap 和 Hashtable 有什么区别?

    • HashMap是非线程安全的,HashTable是线程安全的。
    • HashMap的键和值都允许有null值存在,而HashTable则不行。
    • 因为线程安全的问题,HashMap效率比HashTable的要高。
    • Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。
    • 一般现在不建议用HashTable,

    ①是HashTable是遗留类,内部实现很多没优化和冗余。

    ②即使在多线程环境下,现在也有同步的ConcurrentHashMap替代,没有必要因为是多线程而用HashTable。

    5. 如何决定使用 HashMap 还是 TreeMap?

    对于在 Map 中插入、删除、定位一个元素这类操作,HashMap 是最好的选择,因为相对而言 HashMap 的插入会更快,但如果你要对一个 key 集合进行有序的遍历,那 TreeMap 是更好的选择。

    img

    6. 说一下 HashMap 的实现原理?

    HashMap 基于 Hash 算法实现的,我们通过 put(key,value)存储,get(key)来获取。当传入 key 时,HashMap 会根据 key. hashCode() 计算出 hash 值,根据 hash 值将 value 保存在 bucket 里。当计算出的 hash 值相同时,我们称之为 hash 冲突,HashMap 的做法是用链表和红黑树存储相同 hash 值的 value。当 hash 冲突的个数比较少时,使用链表否则使用红黑树。

  • 相关阅读:
    【C++札记】友元
    【C++札记】const关键字
    【C++札记】实现C++的string类
    【C++札记】拷贝构造函数,浅拷贝和深拷贝
    【C++札记】内联函数
    【C++札记】函数重载
    文章博客导航
    【C++札记】标准输入与输出
    毕业季,学子们又把翟天临推上了热搜!
    【底层原理】高级开发必须懂的"字节对齐"
  • 原文地址:https://www.cnblogs.com/coderD/p/13861390.html
Copyright © 2020-2023  润新知