| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Java常见面试重点知识 ing...... -> 正文阅读 |
|
[Java知识库]Java常见面试重点知识 ing...... |
java基础阶段011.JDK 和 JRE 和 JVM的区别和联系JVM :(Java Virtual Machine),就是 Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。jvm 是 Java 能够跨平台的核心。 JRE :(Java Runtime Environment),就是Java 运行时环境。主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。它相对于 jvm 来说,多出来的是一部分的 Java 类库。 JDK :(Java Development Kit),Java 开发工具包。jdk 是整个 Java 开发的核心,它集成了 jre 和一些好用的小工具。例如:javac.exe,java.exe,jar.exe 等。 三者的关系是:一层层的嵌套关系,JDK>JRE>JVM。 2.== 和 equals 的区别==:
注意:对于引用类型,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。因为每new一次,都会重新开辟堆内存空间。 equals: ???? JAVA当中所有的类都是继承于Object这个超类的,在Object类中定义了一个equals的方法,equals的源码是这样写的:
?????? 这个方法的初始默认行为是比较对象的内存地址值,一般来说,意义不大。所以,在一些类库当中这个方法被重写了,如String、Integer、Date。在这些类当中equals有其自身的实现(一般都是用来比较对象的成员变量值是否相同),而不再是比较类在堆内存中的存放地址了。 总结: ?== 的作用: 面试题:请解释字符串比较之中“==”和equals()的区别?
3.hashCode 和 equals 的区别和联系hashcode是什么???? hash和hash表分别是什么? ??? hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来得到一个hash值,这个时候,我们就需要知道另一个东西,hash表,通过hash算法得到的hash值就在这张hash表中,也就是说,hash表就是所有的hash值组成的,有很多种hash函数,也就代表着有很多种算法得到hash值。 ?? hashcode表示什么? ?? hashcode就是通过hash函数得来的,通俗的说,就是通过某一种算法得到的,hashcode就是在hash表中有对应的位置。 ?? 对象的hashcode怎么得来的呢? ?? 首先一个对象肯定有物理地址,对象的物理地址跟hashcode地址不一样,hashcode代表对象的地址说的是对象在hash表中的位置,物理地址说的对象存放在内存中的地址,那么对象如何得到hashcode呢?通过对象的内部地址(也就是物理地址)转换成一个整数,然后该整数通过hash函数的算法就得到了hashcode,所以,hashcode是什么呢?就是在hash表中对应的位置。 ?? hashcode有什么作用呢? ?? HashCode的存在主要是为了查找的快捷性,HashCode是用来在散列存储结构中确定对象的存储地址的 equals介绍?? equals它的作用也是判断两个对象是否相等,如果对象重写了equals()方法,比较两个对象的内容是否相等;如果没有重写,比较两个对象的地址是否相同,价于“==”。同样的,equals()定义在JDK的Object.java中,这就意味着Java中的任何类都包含有equals()函数。 equals方法和hashcode的关系??? 两个对象先通过hashcode来比较,如果hashcode相等,那么就用equals方法来比较两个对象是否相等 1、如果两个对象equals相等,那么这两个对象的HashCode一定也相同。 2、如果两个对象的HashCode相同,不代表两个对象就相同,只能说明这两个对象在散列存储结构中,存放于同一个位置。 为什么equals方法重写的话,建议也一起重写hashcode方法??? 举个例子,有个A类重写了equals方法,但是没有重写hashCode方法,看输出结果,对象a1和对象a2使用equals方法相等,按照上面的hashcode的用法,那么他们两个的hashcode肯定相等,但是这里由于没重写hashcode方法,他们两个hashcode并不一样,所以,我们在重写了equals方法后,尽量也重写了hashcode方法,通过一定的算法,使他们在equals相等时,也会有相同的hashcode值。
?? 举个实例:看一下String的源码中的equals方法和hashcode方法。这个类就重写了这两个方法。 4.final 在 java 中的作用final作为Java中的关键字可以用于三个地方。用于修饰类、类属性和类方法。 特征:凡是引用final关键字的地方皆不可修改! (1)修饰类:表示该类不能被继承。 (2)修饰方法:表示方法不能被重写。 (3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。
5.java 中的 Math.round()的取整规则Math类中提供了三个与取整有关的方法:ceil、floor、round
6.String 属于基础的数据类型吗?很显然,并不是 数据类型1、基本数据类型 2、引用数据类型 ???? 引用数据类型非常多,大致包括:类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型 ???? 例如,String类型就是引用类型。简单来说,所有的非基本数据类型都是引用数据类型。 基本数据类型和引用数据类型的区别1、存储位置
?????? 在方法中定义的非全局基本数据类型变量的具体内容是存储在栈中的。
?????? 只要是引用数据类型变量,其具体内容都是存放在堆中的,而栈中存放的是其具体内容所在内存的地址(引用/句柄)。 2、传递方式
?????? 在方法中定义的非全局基本数据类型变量,调用方法时作为参数是按数值传递的。
?????? 引用数据类型变量,调用方法时作为参数是按引用传递的。 其他总结
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:55:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |