首页 > 编程语言 > 详细

Java中的string

时间:2019-02-15 22:26:27      阅读:187      评论:0      收藏:0      [点我收藏+]

string类中的每个看起来会修改string的方法,实际上都是创建了一个新的string对象,用来存储修改后的字符串对象,但是最初的string对象没有改变

 

关于在string中使用“+”和stringbuilder()

String s="abc"+"def"+"mongo"+47;

反编译结果是,编译器创建一个stringbuilder对象,使用四次stringbuilder中的append()方法,最终调用tostring()方法产生最终的string对象。

 

 

但是有些情况下编译器并不是这样优化的。

public class print {
    
    public static void main(String[] args) {
        
        String string="";
        for(int i=0;i<5;i++){
            string=string+i;
        }
        System.out.println(string);
    }
}

这种情况下编译器每经过一次循环都会产生一次StringBuilder对象导致资源浪费

推荐使用StringBuilder,将上面的String替换成StringBuilder,改写上面的代码成下面的形式

 

public class print {
    
    public static void main(String[] args) {
        
        StringBuilder stringBuilder=new StringBuilder();
        for(int i=0;i<5;i++){
            stringBuilder.append(i);
        }
        System.out.println(stringBuilder);
    }
}

这样在编译的时候就只会产生一个stringbuilder。

如果在循环中对同一个string拼接使用stringbuilder,编写类的toString()方法时候注意

 

 无意识的递归问题

在写类的toString方法时候应该注意,想要打印对象的内存地址时候容易出现

public class print {
    
    public String toString() {
        return "print"+this;
    }
    
    public static void main(String[] args) {
        System.out.println(new print());
    }
}

当执行"print"+this时候,还会调用toString方法,从而导致无限的递归调用。

应该讲上面的

"print"+this;
改成
"print"+super.toString();














 

Java中的string

原文:https://www.cnblogs.com/feixiangdecainiao/p/10386179.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!