Java字符串面试题汇总(用这一篇文章让面试官闭嘴)

本文详细介绍了Java中字符串的相关知识,包括字符串的不可变性、创建方式、equals与==的区别、String、StringBuffer与StringBuilder的区别、字符串转换以及回文判断等面试常考问题。强调了字符串池的作用和String的intern()方法的应用。
摘要由CSDN通过智能技术生成

1.String 字符串介绍

String属于引用数据类型,由于被final修饰,所以String是不可变的,JVM使用字符串池来存储所有的字符串对象。

2 创建String的不同方式有哪些

2.1 通过new关键字

使用这种方式时, 每次new都会生成一个新的对象 (JVM创建字符串对象但不存储于字符串池。new相同内容的字符串对象会重新生成一个对象, 我们可以调用intern()方法将该字符串对象存储在字符串池,如果字符串池已经有了同样值的字符串,则返回引用。
在这里插入图片描述

2.2 双引号创建

使用这种方式时,JVM去字符串池找有没有值(内容)相等的字符串,如果有,则返回找到的字符串引用。否则创建一个新的字符串对象并存储在字符串池。

在这里插入图片描述

3 equals和==区别

==比较基本数据类型时,比较的是内容;比较引用数据类型String时,比较的是指向堆内存地址是否一样
eauals比较String的内容

4 String和StringBuffer和StringBuilder的区别

String str="a";
for(int i=1:i<10000;i++){
   
	str+="a";
}
StringBuffer str1=new StringBuffer("a");
for(int i=1:i<10000;i++){
   
	str.append("a");
}
StringBuilder str1=new StringBuilder("a");
for(int i=1:i<10000;i++){
   
	str.append("a");
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值