Java常见面试题

一、Java基础

1.JDK 和 JRE 有什么区别?

  • JRE( Java Runtime Environment)是Java 运行时环境,它是运行编译后的Java程序所必需的一切包,包括Java虚拟机(JVM)、Java基础类库、Java 命令和其他基础设施。但是,它不能用于创建新程序。
  • JDK是Java 开发工具包,功能齐全的SDKforJava。它拥有JRE所拥有的一切,还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。它能够创建和编译程序,是提供给程序员使用的。
  • JDK主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心
  • JDK包含的基本组件包括:
    1. javac – 编译器,将源程序转成字节码
    2. jar – 打包工具,将相关的类文件打包成一个文件
    3. javadoc – 文档生成器,从源码注释中提取文档
    4. jdb – debugger,查错工具
    5. java – 运行编译后的java程序(.class后缀的)
    6. appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
    7. Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
    8. Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
    9. Jconsole: Java进行系统调试和监控的工具。

2.== 和 equals 的区别是什么?

  • 功能不同:
    1. "=="是判断两个变量或实例是不是指向同一个内存空间。
    2. "equals"是判断两个变量或实例所指向的内存空间的值是不是相同。
  • 定义不同:
    1. "equals"在JAVA中是一个方法。
    2. "=="在JAVA中只是一个运算符合。
  • 运行速度不同:
    1. ""比"equals"运行速度快,因为""只是比较引用。
    2. "equals"比"=="运行速度要慢。

3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

  1. hashCode()返回该对象的哈希码值;equals()返回两个对象是否相等。
  2. HashCode 用于在散列的存储结构中确定对象的存储地址。
  3. 如果两个对象equals()相等,那么两个对象的hashCode()方法返回的结果也必然相等。
  4. 如果重写equals()方法,必须重写hashCode()方法,以保证equals方法相等时两个对象hashcode返回相同的值。(API上有标注:请注意,通常需要在重写此方法时覆盖hashCode方法,以便维护hashCode方法的常规协定,该方法声明相等的对象必须具有相等的哈希代码。)

    结论:
            两个对象hashcode相同,不一定相等;而如果两对象相等,hashcode一定相同。
posted @ 2020-04-24 16:16  下马问前程  阅读(91)  评论(0)    收藏  举报