前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >还不知道怎么阅读源码?下面教教你呀

还不知道怎么阅读源码?下面教教你呀

作者头像
xdd
发布2022-07-12 14:22:41
1550
发布2022-07-12 14:22:41
举报
文章被收录于专栏:java技术鸡汤

前言


在实际的工作中,大家也一定有阅读源码的习惯,并且会应用在项目中。但是大多数人应该只会进行实践,通过书本知识,或者博客上的样例,只知道用,但不是很清楚为什么这样用,本文来教大家一个学习源码的方法。

字符串String之trim()方法


字符串是大家所熟悉的一个知识点,里面有个trim()方法,源码如下所示:

代码语言:javascript
复制
public String trim() {
        int len = value.length;//value是一个字符数组
        int st = 0;//表示字符串开始第一个不是空格的字符的下标
        char[] val = value;    /* avoid getfield opcode */
    //表示从字符数组的头开始遍历
        while ((st < len) && (val[st] <= ' ')) {
            st++;
        }
        //表示从字符数组的尾开始遍历
        //len的最终值是字符串从尾部开始遍历第一个不是空格的字符下标
        while ((st < len) && (val[len - 1] <= ' ')) {
            len--;
        }
        return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
    }

使用过该方法的同学一定知道它的作用是去掉一个字符串的首尾空格

通过源码的阅读,我们知道该方法是利用数组的特性来进行遍历解决首尾空格的去除,那么比如去掉字符串的末尾空格我们应该怎么实现呢?

我们可以通过类比的思想,将上面trim的方法进行改造也可以达到这个需求的要求,如何实现?参考下面我的改写:

代码语言:javascript
复制
public String trimEnd(char[] value) {
        int len = value.length;
        int st = 0;
        char[] val = value;
        while ((st < len) && (val[len - 1] <= ' ')) {
            len--;
        }
        return ((st > 0) || (len < value.length)) ? new String(val).substring(st, len) : new String(val);
    }

关键点是你需要理解trim的实现,这样才可以修改源码,做一个新的实现。所以我这个方法思路是以字符数组为参数,循环字符数组,然后比对空格,记录从尾部向前第一个不是空格字符的下标,然后进行截取,最后将其转为String类型返回。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java技术鸡汤 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档