你真的了解String的常见API吗?
2021-07-13 03:05
标签:多个 lis public 出现 对象 main field 否则 sign 面试官Q1:请问String常见的方法有哪些,列举几个? String是我们开发中使用频率最高的类,它有哪些方法,大家一定不会陌生,例如: length();//计算字符串的长度 charAt();//截取一个字符 getChars();//截取多个字符 equals();//比较两个字符串 equalsIgnoreCase();//比较两个字符串,忽略大小写 startsWith();//startsWith()方法决定是否以特定字符串开始 endWith();//方法决定是否以特定字符串结束 indexOf();//查找字符或者子串第一次出现的地方。 lastIndexOf();//查找字符或者子串是后一次出现的地方。 substring();//截取字符串 concat();//连接两个字符串 replace();//替换 trim();//去掉起始和结尾的空格 valueOf();//转换为字符串 toLowerCase();//转换为小写 toUpperCase();// 转换为大写 但是像replace(),substring(),toLowerCase()这三个方法需要注意一下,我们看下下面一段代码: 打印结果: 如果你不了解replace方法的源码,可能会认为最后的打印结果为 "ss = 023456",但是实际上方法内部创建了一个新的String对象,并将这个新的String对象返回。对ss是没有做任何操作的,我们也知道String是不可变的嘛。源码如下: 方法内部最后重新创建新的String对象,并且返回这个新的对象,原来的对象是不会被改变的。substring(),toLowerCase()方法也是如此。 还有诸如contact()方法,源码如下: 从上可知参数str不能为null,否则就会包空指针异常。用contact()拼接字符串速度也很快,因为直接Arrays.copyOf,直接内存复制。 面试的时候,如果能对一些方法有自己的认识,看过底层源码,对于面试官来说会有比较深刻的印象! 你真的了解String的常见API吗? 标签:多个 lis public 出现 对象 main field 否则 sign 原文地址:https://www.cnblogs.com/shanheyongmu/p/9583498.html
import java.util.*;
public class StringTest {
public static void main(String[] args){
String ss = "123456";
System.out.println("ss = " + ss);
ss.replace(‘1‘, ‘0‘);
System.out.println("ss = " + ss);
}
}
ss = 123456
ss = 123456
public String replace(char oldChar, char newChar) {
// 判断替换字符和被替换字符是否相同
if (oldChar != newChar) {
int len = value.length;
int i = -1;
// 将源字符串转换为字符数组
char[] val = value; /* avoid getfield opcode */
while (++i len) {
// 判断第一次被替换字符串出现的位置
if (val[i] == oldChar) {
break;
}
}
// 从出现被替换字符位置没有大于源字符串长度
if (i len) {
char buf[] = new char[len];
for (int j = 0; j ) {
// 将源字符串,从出现被替换字符位置前的字符将其存放到字符串数组中
buf[j] = val[j];
}
while (i len) {
char c = val[i];
// 开始进行比较;如果相同的字符串替换,如果不相同按原字符串
buf[i] = (c == oldChar) ? newChar : c;
i++;
}
// 使用String的构造方法进行重新创建String
return new String(buf, true);
}
}
return this;
}
public String concat(String str) {
int otherLen = str.length();
if (otherLen == 0) {
return this;
}
int len = value.length;
char buf[] = Arrays.copyOf(value, len + otherLen);
str.getChars(buf, len);
return new String(buf, true);
}
文章标题:你真的了解String的常见API吗?
文章链接:http://soscw.com/index.php/essay/104440.html