A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

有如下一个例子,在操作字符串后s.trim()并没有改变引用s的值,按正常的的逻辑s.trim()操作的是引用,应该直接去掉两边的空格,但实际上不是,返回的是一个copy,要是直接操作原有的s不是更简单吗?java为什么要返回一个copy呢?
class Demo {

        public static void main(String[] args) {
                String s = " Hello ";
                 
                s += " World ";
               
                s.trim(); //调用去掉空白方法
                 
                System.out.println(s); //输出带空格的“ Hello World  ”
        }
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 鼓励鼓励

查看全部评分

2 个回复

倒序浏览
因为只要" Hello "这个值一建立,就是永远不变的值了,这个是String的特点。所以只能通过copy来创建新的字符串。但是StrngBuilder就不一样,而是作为一个缓冲区,可以连接多个字符串而最终是一个对象
回复 使用道具 举报
String s = " Hello ";" 用String声明的变量,值不可以改变,这是java中String的特点。
你可以建一个变量来接收 s.trim(); 如String x=s.trim(); 打印x就去掉空格了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马