- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
历年Java面经(大厂面试必备)100题
一一、、基基础础篇篇
1、Strings="xyz"和Strings=neString("xyz")区别?
【【仅仅供供参参考考】】
两个语句都会先去字符串常量池中检查是否已经存在“xyz”,如果有则直接使用,如果没有
则会在常量池中创建“xyz”对象。
另外,Strings=neString("xyz")还会通过neString()在堆里创建一个内容与"xyz"
相同的对象实例。
所以前者其实理解为被后者的所包含。
2、两个对象的hashCode()相同,则equals()是否也一定为true?
【【仅仅供供参参考考】】
equals与hashcode的关系:
如果两个对象调用equals比较返回true,那么它们的hashCode值一定要相同;
如果两个对象的hashCode相同,它们并不一定相同。
hashcode方法主要是用来提升对象比较的效率,先进行hashcode()的比较,如果不相同,那就
不必在进行equals的比较,这样就大大减少了equals比较的次数,当比较对象的数量很大的时
候能提升效率。
之所以重写equals()要重写hashcode(),是为了保证equals()方法返回true的情况下hashcode
值也要一致,如果重写了equals()没有重写hashcode(),就会出现两个对象相等但hashcode()
不相等的情况。这样,当用其中的一个对象作为键保存到hashMap、hashTable或hashSet中,再
以另一个对象作为键值去查找他们的时候,则会查找不到。
3、什么是StringJoiner?
【【仅仅供供参参考考】】
StringJoiner是Java8新增的一个API,它基于StringBuilder实现,用于实现对字符串之
间通过分隔符拼接的场景。
StringJoiner有两个构造方法,第一个构造要求依次传入分隔符、前缀和后缀。第二个构造则
只要求传入分隔符即可(前缀和后缀默认为空字符串)。
4、如何将字符串反转?
【【仅仅供供参参考考】】
使用StringBuilder或者stringBuffer的reverse()方法。
示例代码:
//StringBufferreverse
StringBufferstringBuffer=neStringBuffer();
stringBuffer.append("abcdefg");
第1/24页
System.out.println(stringBuffer.reverse());//gfedcba
//StringBuilderreverse
StringBuilderstringBuilder=neStringBuilder();
stringBuilder.append("abcdefg");
System.out.println(stringBuilder.reverse());//gfedcba
5、String类的常用方法都有那些?
【【仅仅供供参参考考】】
indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的byte类型数组。
length():返回字符串长度。
toLoerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
equals():字符串比较。
6、JDK/JRE/JVM三者的关系
【【仅仅供供参参考考】】
JVM
英文名称(JavaVirtualMachine),就是我们耳熟能详的Java虚拟机。Java能够跨平台运
行的核心在于JVM。
所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说
class文件并不直接与机器的操作系统交互,而是经过虚拟机间接与操作系统交互,由虚拟机将
程序解释给本地系统执行。
针对不同的系统有不同的jvm实现,有Linux版本的j
文档评论(0)