java面试中和String有关的问题及答案
创始人
2025-05-31 14:45:15
0

文章目录

    • 1. String 属于基础的数据类型吗?
    • 2. String str="i"与 String str=new String(“i”)一样吗?
    • 3. 如何将字符串反转?
    • 4. String 类的常用方法都有那些?
      • (1)常见String类的 `获取` 功能
      • (2)常见String类的 `判断` 功能
      • (3)常见String类的 `转换` 功能
      • (4)常见String类的 `其他常用` 功能
      • (5)new String("a") + new String("b") 会创建几个对象?
    • 5. 如何将字符串去空格?
    • 6. java 中操作字符串都有哪些类?它们之间有什么区别?
      • (1)String
      • (2)StringBuilder
      • (3)StringBuffer

1. String 属于基础的数据类型吗?

不属于,八种基本数据类型:byte、short、char、int、long、float、double、boolean

2. String str="i"与 String str=new String(“i”)一样吗?

String str="i"会将起分配到 常量池 中,常量池中没有重复的元素,如果常量池中 存在i,就将 i的地址赋给变量,如果 没有就创建一个再赋给变量

String str= new String(“i”)会 将对象分配到堆中,即使内存一样,还是会重新创建一个新的对象

3. 如何将字符串反转?

对象封装到stringBuilder 中,调用 reverse 方法反转。

4. String 类的常用方法都有那些?

equals、length、contains、replace、split、hashcode、indexof、substring、trim、toUpperCase、toLowerCase、isEmpty等。

(1)常见String类的 获取 功能

方法名功能
length获取字符串长度;
charAt(int index)获取指定索引位置的字符;
indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引;
substring(int start)从指定位置开始截取字符串,默认到末尾;
substring(int start,int end)从指定位置开始到指定位置结束截取字符串;

(2)常见String类的 判断 功能

方法名功能
equals(Object obj)比较字符串的内容是否相同,区分大小写;
contains(String str)判断字符串中是否包含传递进来的字符串;
startsWith(String str)判断字符串是否以传递进来的字符串开头;
endsWith(String str)判断字符串是否以传递进来的字符串结尾;
isEmpty()判断字符串的内容是否为空串"";

(3)常见String类的 转换 功能

方法名功能
byte[] getBytes()把字符串转换为字节数组;
char[] toCharArray()把字符串转换为字符数组;
String valueOf(char[] chs)把字符数组转成字符串。valueOf可以将任意类型转为字符串;
toLowerCase()把字符串转成小写;
toUpperCase()把字符串转成大写;
concat(String str)把字符串拼接;

(4)常见String类的 其他常用 功能

方法名功能
replace(char old,char new)将指定字符进行互换
replace(String old,String new)将指定字符串进行互换
trim()去除两端空格
int compareTo(String str)会对照ASCII 码表 从第一个字母进行减法运算 返回的就是这个减法的结果,如果前面几个字母一样会根据两个字符串的长度进行减法运算返回的就是这个减法的结果,如果连个字符串一摸一样 返回的就是0。

(5)new String(“a”) + new String(“b”) 会创建几个对象?

对象n存在方式
对象1new StringBuilder()
对象2new String(“a”)
对象3常量池中的"a"
对象4new String(“b”)
对象5常量池中的"b"
对象6new String(“ab”)

深入剖析:StringBuilder中的toString():

对象6:new String(“ab”)

强调一下,toString()的调用,在字符串常量池中,没有生成"ab"

附加题

String s1 = new String("1") + new String("1"); //s1变量记录的地址为:new String
s1.intern(); //在字符串常量池中生成"11"。如何理解:jdk6:创建了一个新的对象"11",也就有新的地址;jdk7:此时常量池中并没有创建"11",而是创建了一个指向堆空间中new String("11")的地址;
String s2 = "11";
System.out.println(s1 == s2); //jdk6:false;jdk7:true

5. 如何将字符串去空格?

调用 trim()方法。

6. java 中操作字符串都有哪些类?它们之间有什么区别?

(1)String

String是不可变对象,每次对String类型的改变时都会生成一个新的对象。

(2)StringBuilder

线程不安全,效率高,多用于单线程。

(3)StringBuffer

线程安全,由于加锁的原因,效率不如StringBuilder,多用于多线程。

不频繁的字符串操作使用String,操作频繁的情况不建议使用String。

三者的详解链接:https://blog.csdn.net/m0_48170265/article/details/129342702

相关内容

热门资讯

“男子持刀入室盗窃”视频引发关... 近日,一段疑似“小偷”入室盗窃被业主家中监控拍下的视频在网上引发关注。11月21日晚,“翠屏公安”微...
绝不允许日本军国主义幽灵复活!... 2025年11月7日,日本首相高市早苗宣称,如果中国大陆对台湾出动军舰并使用武力,可能会构成“存亡危...
【解决】AI法律助手荣获202... 2025全球数字经济大会启幕,搭建国际数字合作高端平台 经国务院批准,由北京市人民政府、国家互联网信...
嘉兴男子与妻争吵,突然将行李箱... 近日,浙江嘉兴一对夫妻因琐事发生争吵,丈夫突然将装满衣物的行李箱从6楼扔到楼下,引发关注。11月22...
三地107家律所齐聚丰台,京津... 11月22日,京津冀律师驿站举办“党建业务深度融合 促进行业规范发展”主题活动,发布“百千万行动计划...
家装预付资金安全困局如何破解,... 家装预付资金安全困局如何破解 专家提出:建立“先验收后付款”装修资金存管制度 预交数万元甚至数十万元...
工行安康解放路支行积极开展《反... 为深入贯彻落实《国家金融监督管理总局安康监管分局办公室关于开展<反有组织犯罪法>宣传活动的通知》要求...
重庆公布育儿补贴制度实施方案 原标题:每孩每年3600元 重庆公布育儿补贴制度实施方案 11月21日,记者了解到,市卫生健康委、市...
十五运会组委会在深总结本届赛事... 深圳新闻网2025年11月22日讯(深圳报业集团记者 林炜航)11月21日,十五运会组委会在深圳市民...