You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何下述Java代码提取字符而非空格?

拆解这段Java代码,解答你的困惑

首先先把这段代码贴出来方便分析:

public class Practice {
    public static void main( String[] args ) {
        String i = new String("I love you");
        System.out.println(doSomething(i));
    }
    public static String doSomething( String s ) {
        final String BLANK = " ";
        String str = "";
        String temp;
        for ( int i = 0; i < s.length(); i++) {
            temp = s.substring(i, i + 1);
            if (!(temp.equals(BLANK))) {
                str += temp;
            }
        }
        return str;
    }
}

先搞懂这段代码的核心功能

它其实是移除输入字符串里的所有空格,返回一个没有空格的新字符串。比如你传入"I love you",最终会输出"Iloveyou"。

逐行拆解关键逻辑

  • 在doSomething方法里,首先定义了一个常量BLANK代表空格字符。
  • 初始化了一个空字符串str,用来存放最终处理后的结果。
  • 接下来的for循环会逐个遍历输入字符串s的每一个字符:
    • 用substring(i, i+1)取出当前位置的单个字符,存在temp里
    • 重点看这个判断条件:!(temp.equals(BLANK))——翻译成人话就是「如果当前字符不是空格」,那就把这个字符拼接到str里
  • 循环结束后,str里就攒了所有非空格的字符,返回它就行。

解答你的困惑:为什么提取的是字符而非空格?

原因就在那个if判断里!代码特意加了「非」的逻辑(!取反),只有当字符不是空格的时候,才会被添加到结果里。反过来想:如果当前字符是空格,就会跳过这个判断,不执行拼接操作。所以最终结果里自然就只有非空格的字符啦。

内容的提问来源于stack exchange,提问作者Z.Richard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:47:38