黑马软件工程师_字符串操作

黑马程序员_字符串操作

------- android培训、java培训、期待与您交流! ----------

 

字符串类Spring在Java中是一个很特殊的类。

1.使用的很频繁;

2.String类是一个不可更改的类

3.有自己的重载操作符;

4.种类繁多的构造器,其中最特殊的方式它竟然可以用一下的方式创建

String str = "String";

这是基本数据类型的特权,而String不属于基本数据类型,显然它在搞特殊 ;

 

5.字符串常量(非通过函数创建,使用在上面提到的特殊方式创建的字符串)会存放在一个叫常量池的特殊内存区域,这样相同内容的字符串常量将共享同一块内存黑马软件工程师_字符串操作;这样做据说是为了照顾性能。

 

这样的一个类还不够特殊?好吧,再看看文档中那让人头皮发麻的构造函数和成员方法吧!令人惊奇的是这些我们会经常用到。很难想象自己以后会这么“变态”。这些方法的具体含义请自行参阅文档,我在这里列举一下使用String类要注意的事项,留备以后参考。

1.String类占用的内存大小

2.子字符串占用的内存大小

这些问题主要参考:Memory usage of Java Strings and string-related objects

这里的子字符串是指通过subString()方法创建的字符串,根据上面作者的解释,子字符串会共享源字符串的内存。如果需要为子字符串分配新的内存就应该通过String的构造函数String(String str)创建一个新的对象。具体使用哪种方式需要考虑具体的环境。详细的解释参考:Java 性能优化之String篇。本文中作者最后的结论就是,如果需要处理的所有子字符串的总长大于源字符串就采用默认的方式,如果子字符串的总长远小于源字符串就为其分配新的内存。