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

相关内容

热门资讯

菲媒:菲律宾副总统称,不优先考... 【环球网报道】综合菲律宾《马尼拉标准报》等媒体6月1日报道,菲律宾副总统莎拉·杜特尔特称,她不优先考...
原创 美... 特朗普再次执掌白宫后,他的“地盘扩张梦”可谓是雷声大雨点小,搞得沸沸扬扬却未见实效。他本想一口气吞掉...
法网-郑钦文鏖战2-1萨姆索诺... 北京时间6月1日,2025赛季网球大满贯法国公开赛继续进行,在女单第三轮的一场比赛中,赛会8号种子、...
以国防军:黎以停火以来超180... △黎巴嫩南部地区(资料图) 以色列国防军当地时间6月1日下午发布消息称,当天上午,一名黎巴嫩真主党特...
深夜,巨子生物突发声明:接受检... 每经编辑|金冥羽 巨子生物旗下重组胶原蛋白品牌可复美产品成分争议持续发酵。 6月1日22点32分,...
新修订的《快递暂行条例》6月1... 6月1日起,《国务院关于修改〈快递暂行条例〉的决定》正式施行。此次修改,专门增加了“快递包装”章节,...
开放“以债换房”政策,可直接置... “南京网络辟谣”微信公众号6月1日发文称,近日,有“南京二手房零首付李经理”“合肥瑶珺房地产代理有限...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
基于TDesign风格的Bla... 作为一名Web开发人员,开发前端少不了使用JavaScript,而Bla...