前言
大白话讲面试题,每天更新三题,提倡每日积累而不是临阵磨枪,我的目的不是为了背题,而是通过这种方式来更好的巩固自身所掌握的知识。
题目的星星代表难度等级,五星为满,并且我会列出需要掌握的前置知识。
大家一起,冲鸭!
Java 中 == 和 equal 的区别??
目的:基础考察。
回答这题你还需要理解:无
对于 == 号来说,有两种情况。
第一种,如果对基本数据类型直接进行比较,那么比较的是值,如果是引用类型,比较的是存放对象的内存地址。
但有些包装类型会存在「缓存」的情况,如 Integer 对象,对 -127 到 128 之间的值在自动装箱时,会直接在内存中进行重用,如果超出这个值,才会创建新的对象,所以对两个 Integer 对象进行 == 操作,它们之间是有可能相等的。
对于 equal 方法来说,在复写前,它的原理就是使用 == 进行比较,复写后,才是对具体的值进行比较。
什么是自动装箱/自动拆箱??
目的:基础考察
回答这题你还需要理解:无
简单来说,自动装箱就是把基本数据类型转换为包装数据类型,如 Integer a = 1 ;而自动拆箱就是将包装数据类型转换为基本数据类型,如 int b = a 。
这个过程是自动完成的,所以也叫自动装箱/自动拆箱。
JDK/JRE/JVM 都了解过吗?他们之间的区别在哪里??
目的:基础概念考察。
回答这题你还需要理解:JDK 版本发展历程(能回答的更从容)
首先是 JDK/JRE。
JRE 全称是 Java Runtime Environment(Java 运行环境)。
假如你想运行一个 Java 程序,单纯的运行,而什么都不做的话,那么只需要安装 JRE 即可,但是它不能用来创建新的程序,也就是不能用来开发。
JDK 全称是 Java Development kit(Java 开发工具包)。
JDK 包含了 JRE,同时,它还带有编译器和工具,能够用来创建新的应用程序。
再者是 JVM。
JVM 被包含在 JRE 中,全称是 Java Virtual Machine(Java 虚拟机)。
Java 应用程序被编译后会生成字节码文件,字节码文件面向的不是操作系统,而是 JVM,由 JVM 来处理与不同操作系统之间的交互,因此 Java 语言才有一次编写,到处运行的称号,因为复杂的底层逻辑都由 JVM 帮你处理好了,相同的字节码在不同平台的 JVM 上都能获得相同的执行结果。
引用
在这里我会放上所有我参考的资料链接
|