2023年Java面试题大全100题
一一、、基基础础篇篇
1、Java中的Math.round(-1.5)于多少?
【【仅仅供供参参考考】】
于-1,因为在数轴上取值时,中间值(0.5)向右取整,所以正0.5是往上取整,负0.5
是直接舍弃。
2、两个对象的hashCode()相同,java零基础试题则equals()也一定为true,对吗?
【【仅仅供供参参考考】】
不对,两个对象的hashCode()相同,equals()不一定true。
代码示例:
Stringstr1=通话;
Stringstr2=重地;
System.out.println(String.format(str1:%d|str2:%d,str1.hashCode(),str2.
hashCode()));
System.out.println(str1.equals(str2));
执行的结果:
str1:1179395|str2:1179395
false
代码解读:很显然“通话”和“重地”的hashCode()相同,然而equals()则为false,因
为在散列表中,hashCode()相即两个键值对的哈希值相,然而哈希值相,并不一定能得
出键值对相。
3、JDK和JRE有什么区别?
【【仅仅供供参参考考】】
JDK:JavaDevelopmentKit的简称,Java开发工具包,提供了Java的开发环境和运行环
境。
JRE:JavaRuntimeEnvironment的简称,Java运行环境,为Java的运行提供了所需环境。
具体来说JDK其实包含了JRE,同时还包含了编译Java源码的编译器Javac,还包含了很多
Java程序调试和分析的工具。简单来说:如果你需要运行Java程序,只需安装JRE就可以
了,如果你需要编写Java程序,需要安装JDK。
4、Strings=newString(xyz)创建了几个字符串对象?
【【仅仅供供参参考考】】
一个或两个。如果字符串常量池已经有“xyz”,则是一个;否则,两个。
当字符创常量池没有“xyz”,此时会创建如下两个对象:
一个是字符串字面量xyz所对应的、驻留(intern)在一个全局共享的字符串常量池中的实
第1/26页
例,此时该实例也是在堆中,字符串常量池只放引用。
另一个是通过newString()创建并初始化的,内容与xyz相同的实例,也是在堆中。
5、Stringstr=i与Stringstr=newString(i)一样吗?
【【仅仅供供参参考考】】
不一样,因为内存的分配方式不一样。Stringstr=i的方式,Java虚拟机会将其分配到常量
池中;而Stringstr=newString(i)则会被分到堆内存中。
6、什么是StringJoiner?
【【仅仅供供参参考考】】
StringJoiner是Java8新增的一个API,它基于StringBuilder实现,用于实现对字符串之
间通过分隔符拼接的场景。
StringJoiner有两个构造方法,第一个构造要求依次传入分隔符、前缀和后缀。第二个构造则
只要求传入分隔符即可(前缀和后缀默认为空字符串)。
7、String和StringBuilder、StringBuffer的区别?
【【仅仅供供参参考考】】
String:String的值被创建后不能修改,任何对String的修改都会引发新的String对象的
生成。
StringBuffer:跟String类似,但是值可以被修改,使用synchronized来保证线程安全。
StringBuilder:StringBuffer的非线程安全版本,没有使用synchronized,具有更高的性
能,推荐优先使用。
8、==和equals的区别是什么?
【【仅仅供供参参考考】】
==:运算符,用于比较基础类型变量和引用类型变量。
对于基础类型变量,比较的变量保存的值是否相同,类型不一定要相同。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/26179.html