String的一些小用法(一)

130 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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()));
    }

结束结束,那就🛴🛴🛴

如果对你有所帮助

点个赞呗