持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
🍊作者简介:少年不想说话,努力长大
🍊往期回顾:
🍊近期目标:写完基础源码,点赞👍🏼、收藏⭐、留言📩
在开发中,我们平时使用最多的就是String,这个说的不为过吧,但是它的方法那么多,我们经常记得的就是String之所以能存储串串,是因为接收这些串串的是一个数组,而我们的所有操作都是基于数组来进行处理的;
subString方法
对于String的初始化,我们可以直接看new String,在这里我们可以传入字符串或者char类型的数组均可;
String sss = new String(new char[]{'a','b'});
那里首先我们看String的subString方法,一些不重要的我们就不看了;主要看它subString怎么截取的,首先在你截取的时候它会调用它的有参构造方法,然后通过Arrays.copyOfRange进行需要长度的复制;
concat方法
该方法的意思是拼接,如果我们需要拼接的是个空串,那么原样返回,否则会返回一个新串;所以有时候不用担心数据为空啥的继续拼接会影响效率啥的,具体逻辑代码有体现,很简单的;
mm = mm.concat(sss);
首先concat会创建一个拼接后长度的char数组,并填入value,然后将待拼接的串通过进行拼接,最后new出来;
str.getChars(buf, len);
replace方法
该方法是将我们字符串的关键字进行替换,这里字符串会进行replaceAll方法调用替换,但是为了方便,我们以char类型形参进行源码看🍍🍍🍍。
nnn = nnn.replace("n","hh");
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 < i; j++) {
buf[j] = val[j];
}
while (i < len) {
char c = val[i];
buf[i] = (c == oldChar) ? newChar : c;
i++;
}
return new String(buf, true);
}
}
return this;
}
它会对匹配上的字符通过new一个新的char[]数组进行替换,并return;还是和上面concat一样的,如果匹配不上,直接返回即可,至于字符串调用的replaceAll,它是通过匹配的方法进行替换,有兴趣大家可以自行看下,好啦,结束啦🥗🥗🥗;
public String replace(CharSequence target, CharSequence replacement) {
return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
}
结束结束,那就🛴🛴🛴
如果对你有所帮助
点个赞呗