一、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包含的基本组件包括:
- javac – 编译器,将源程序转成字节码
- jar – 打包工具,将相关的类文件打包成一个文件
- javadoc – 文档生成器,从源码注释中提取文档
- jdb – debugger,查错工具
- java – 运行编译后的java程序(.class后缀的)
- appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
- Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
- Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
- Jconsole: Java进行系统调试和监控的工具。
2.== 和 equals 的区别是什么?
- 功能不同:
- "=="是判断两个变量或实例是不是指向同一个内存空间。
- "equals"是判断两个变量或实例所指向的内存空间的值是不是相同。
- 定义不同:
- "equals"在JAVA中是一个方法。
- "=="在JAVA中只是一个运算符合。
- 运行速度不同:
- ""比"equals"运行速度快,因为""只是比较引用。
- "equals"比"=="运行速度要慢。
3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
- hashCode()返回该对象的哈希码值;equals()返回两个对象是否相等。
- HashCode 用于在散列的存储结构中确定对象的存储地址。
- 如果两个对象equals()相等,那么两个对象的hashCode()方法返回的结果也必然相等。
- 如果重写equals()方法,必须重写hashCode()方法,以保证equals方法相等时两个对象hashcode返回相同的值。(API上有标注:请注意,通常需要在重写此方法时覆盖hashCode方法,以便维护hashCode方法的常规协定,该方法声明相等的对象必须具有相等的哈希代码。)
结论:
两个对象hashcode相同,不一定相等;而如果两对象相等,hashcode一定相同。
posted @
2020-04-24 16:16
下马问前程
阅读(
91)
评论()
收藏
举报