String对象的SubString效率
来源:互联网 发布:今日重要财经数据 编辑:程序博客网 时间:2024/05/18 00:37
substring()返回的字符串并不会真正复制原字符串的byte数组的一部分,而只是指向原字符串的byte数组的某个区间,这个特性决定了它的执行效率是很不错的,在内存使用方面则根据具体情况可能有两极化的表现。
一般来说,由于substring()没有为子字符串申请新的空间,它有节约内存空间的作用。
但在有些情况下,它反而浪费内存空间,因为它会导致它所基于的原字符串无法释放,从而不能被垃圾回收,如:
public String getSub() {
String total=.......
return total.substring(0,1);
}
String sub = getSub();
total本来是个局部变量,getSub()结束就可以被释放,但由于sub的存在,它无法被释放。如果total是个很长的字符串,sub相对来说短得多,就不是好事了。
要解决这个问题也很简单,用intern()就可以了,如:
public String getSub() {
String total=.......
return total.substring(0,1).intern();
}
String sub = getSub();
这时系统会为sub的数据单独开辟一个独立的内存空间,原字符串total在getSub()结束就可被垃圾回收了。
总的来说,还是要具体情况具体分析,灵活运用,并没有一定的答案,关键是理解背后的机制。
一般来说,由于substring()没有为子字符串申请新的空间,它有节约内存空间的作用。
但在有些情况下,它反而浪费内存空间,因为它会导致它所基于的原字符串无法释放,从而不能被垃圾回收,如:
public String getSub() {
String total=.......
return total.substring(0,1);
}
String sub = getSub();
total本来是个局部变量,getSub()结束就可以被释放,但由于sub的存在,它无法被释放。如果total是个很长的字符串,sub相对来说短得多,就不是好事了。
要解决这个问题也很简单,用intern()就可以了,如:
public String getSub() {
String total=.......
return total.substring(0,1).intern();
}
String sub = getSub();
这时系统会为sub的数据单独开辟一个独立的内存空间,原字符串total在getSub()结束就可被垃圾回收了。
总的来说,还是要具体情况具体分析,灵活运用,并没有一定的答案,关键是理解背后的机制。
0 0
- String对象的SubString效率
- 常用的 JavaScript String 对象 indexOf() substring() split() replace()
- JS String对象slice substr substring的对比
- String.subString的用法
- Java String的substring
- String的subString
- string的subString方法
- String类的substring方法
- String 之substring的用法
- String.substr与String.substring的区别
- string.indexof()和string.substring()的用法
- String和StringBuffer的效率
- js入门(1)——复制 [ Array对象的slice()和 String对象的substr(),substring() ]
- String subString
- String.Substring()
- String.slice() 和 String.substring(),String.substr()的区别
- 实现string的 sblit subString 的功能
- String的substring和subSequence的区别
- linux 添加huwei3g驱动的调试流程
- TCP/IP,http,socket,长连接,短连接——小结
- xml知识
- cocos2dx plist中各个属性含义
- xcode 插件集合
- String对象的SubString效率
- Wince 运行一段时间后同步出错的问题
- 【深度探索STL】空间配置器(二) 第一级配置器
- hdu 2855 Fibonacci Check-up(矩阵乘法)
- 常用awk命令
- windows+cmake
- linux下开启mysql慢查询,分析查询语句
- java中最常用的的容器是
- UIWebView中添加点击手势UITapGestureRecognizer没有效果的原因