JAVA性能调优-字符串性能优化

1.字符串的三种不同创建方式:

String str1= "abc"; 

abc直接存放于字符串常量池中

String str2= new String("abc"); 

通过new对象的方式创建字符串对象,引用地址存放在堆内存中,abc 则存放在字符串常量池中

String str3= str2.intern();

intern方法的作用即去常量池中寻找有无str2对应的字符串对象,有则返回引用,无则创建该字符串对象

2.String对象优化:

2.1 老生常谈的字符串拼接问题

String str = "abcdef";
for (int i = 0; i < 1000; i++) {
	str = str + i;
}
for (int i = 0; i < 1000; i++) {
	str = (new StringBuilder(String.valueOf(str))).append(i).toString();
}

第一个for循环拼接一次即会创建一个对象,第二个for循环为编译器优化过后的拼接

2.2 使用String.intern节省内存

String a =new String("abc").intern(); 
String b = new String("abc").intern(); 
if(a==b) { 
	System.out.print("a==b"); 
}

输出a==b
创建a变量时,在堆内存中创建一个对象,调用intern方法去常量池中寻找abc对象,发现没有所以创建并返回引用
创建b变量时,在堆内存中创建一个对象,调用intern方法去常量池中寻找abc对象,发现有所以直接返回引用

3.使用场景:

A.String str= "abcdef"; 
B.String str= new String("abcdef"); 
C.String str= new String("abcdef").intern();

在创建局部变量以及常量时,我们一 般使用A的这种方式;
如果我们要区别一个字符串创建两个不同的对象来使用时,会选择B;
intern一般使用的比较少,例如我们平时会创建很多一样的字符串的对象时,且对象会保存在内存中,我们可以考虑使 用intern方法来减少过多重复对象占用内存空间。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值