Java字符串String的trim()方法源码解析

平常判断一个字符串是不是一个空串,通常都会先调用String类的trim()方法,再判断该字符串的长度是不是0,或者调用String的isEmpty方法判断是不是空串(和判断长度等价)。那么,其实trim()方法就是将一个字符串开头连续的空格和结尾连续的空格消除的方法。下面就通过源码了解一下这个方法的逻辑是如何实现的。

首先,贴上trim()方法的源码

    public String trim() {
        int len = value.length;
        int st = 0;
        char[] val = value;    /* avoid getfield opcode */

        while ((st < len) && (val[st] <= ' ')) {
            st++;
        }
        while ((st < len) && (val[len - 1] <= ' ')) {
            len--;
        }
        return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
    }

源码中,value就是字符串的字符数组,如,字符串“test”是用一个final修饰的char[]数组保存,value=['t','e','s','t']。

知道了value的值,那么源码就很容易看懂了。

首先是把字符串长度赋值给len这个变量,那么len=4;

赋值st变量值为0,st=0;

字符数组val=value

从该字符数组的0下标开始遍历,如果这个下标的字符是空格或者小于空格(ascll表里面,在空格前面的全是各种符号,换行符这些),那么st的值就加一,可以简单理解为st的值就是字符串头部空格的数量。当遇到第一个不是空格的字符时,跳出循环,那么st的值就是字符串第一个不是空格的字符的下标。

之后,如果空格的数量小于字符串的长度(如果等于字符串长度,跳出循环,执行最后的substring方法,substring()源码里面的处理是直接返回空串。),并且字符串末尾的字符是空格的话,那么len减一,简单理解,len就是这个字符串再移出末尾连续的空格之后的长度;从尾部开始,当遇到第一个不是空格的字符时,跳出循环。

最后执行substring方法,将去掉了开头连续的空格和结尾连续的空格的字符串返回。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java中的String类是用于表示字符串的类,它包含许多常用的方法来处理字符串,以下是一些常用的字符串方法及其返回值: 1. length()方法:返回字符串的长度,即包含的字符数。 2. charAt(int index)方法:返回字符串中指定位置的字符。 3. substring(int beginIndex, int endIndex)方法:返回从指定位置开始到指定位置结束的子字符串,其中beginIndex表示开始位置(包含),endIndex表示结束位置(不包含)。 4. indexOf(char ch)方法:返回指定字符在字符串中第一次出现的位置,如果不存在则返回-1。 5. indexOf(String str)方法:返回指定字符串字符串中第一次出现的位置,如果不存在则返回-1。 6. replace(char oldChar, char newChar)方法:用指定的新字符替换字符串中所有的旧字符,并返回替换后的新字符串。 7. replaceAll(String regex, String replacement)方法:用指定的新字符串替换字符串中符合正则表达式的所有子串,并返回替换后的新字符串。 8. toUpperCase()方法:将字符串中的所有字母转换为大写字母,并返回新字符串。 9. toLowerCase()方法:将字符串中的所有字母转换为小写字母,并返回新字符串。 10. trim()方法:去除字符串两端的空格,并返回新字符串。 以上这些方法String类中常用的一些字符串方法,能够满足大多数字符串操作的需求。 ### 回答2: Java中的String类是非常重要的一个类,常用于存储和操作字符串,其中字符串长度是一个基本概念。String类中提供了一些常用方法来获取字符串长度。 1. length()方法:该方法返回一个字符串的长度,即字符串中字符的个数。例如: ```java String str = "Hello World!"; int len = str.length(); ``` 上面的代码中,len的值为12,因为字符串中一共有12个字符。 2. isEmpty()方法:该方法返回一个布尔值,判断一个字符串是否为空。如果一个字符串的长度为0,则认为它是空的。例如: ```java String str = ""; boolean isEmpty = str.isEmpty(); ``` 上面的代码中,isEmpty的值为true,因为str是一个空字符串。 3. trim()方法:该方法去除字符串两端的空格,并返回去除空格后的字符串。例如: ```java String str = " Hello World! "; str = str.trim(); ``` 上面的代码中,在执行str.trim()方法之后,str的值变为了"Hello World!",去除了两端的空格。 4. getBytes()方法:该方法返回一个字节数组,表示该字符串中每个字符的字节编码。例如: ```java String str = "Hello World!"; byte[] bytes = str.getBytes(); ``` 上面的代码中,bytes的长度为12,因为字符串中一共有12个字符,每个字符占用1个字节。 5. length vs length():需要注意的是,length和length()虽然都可以用来获取字符串长度,但是它们的返回值类型不同。length是一个数组的属性,返回该数组的长度;而length()是String类的方法,返回字符串的长度。因此,我们需要根据具体的情况选择使用哪个方法。 在实际开发中,我们会频繁地使用到这些方法,进行字符串长度的计算和判断,从而达到我们想要的程序效果。 ### 回答3: Java中的字符串是一种非常常见的数据类型,可以使用String类来创建和处理字符串。其中,字符串长度是String类中的一个非常基本的方法,对于字符串的处理和操作都有着非常重要的意义。 字符串长度可以通过String类中的length()方法来获取。该方法返回的是一个整数值,表示该字符串中字符的数量,包括空格和特殊字符。例如,对于下面的字符串String str = "Hello World!"; 用str.length()方法将返回整数值12,它是该字符串中字符的数量。如果该字符串为空字符串,即“”,那么用该方法将返回整数值0。 在实际的开发中,字符串长度的获取非常常见,比如在字符串的截取、比较、连接等操作中都需要用到字符串长度。另外,在一些具有字符个数限制的场景中(如数据库中的字段),该方法也可以用来判断字符串的长度是否符合规定。 除了length()方法,还有一个类似的属性可以获取字符串的长度,就是String类中的length属性。该属性是一个final类型的整数,通过直接访问该属性可以获取字符串的长度。例如: String str = "Hello World!"; int len = str.length; 用str.length将返回整数值12,它等价于用str.length()方法。不过,需要注意的是,该属性是final类型的,即一旦获取了长度值,就不能再修改了。 因此,对于字符串的操作和处理中,获取字符串长度是一项非常基本的操作。Java中提供了String类中的length()方法和length属性来获取字符串的长度,能够满足我们大部分的需求。对于需要频繁使用的场景,也可以将获取到的长度值存储在变量中,以便下次使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值