- 简介
String最为java中最重要的数据类型。字符串是软件开发中最重要的对象之一,通常,字符串对象在内存中总是占据着最大的空间块。所以,高效处理字符串,将提高系统的整个性能。
在java语言中,String对象可以认为是char数组的衍生和进一步的封装。它的主要组成部分是:char数组、偏移量和string的长度。char数组表示string的内容,它是string对象所表示字符串的超集。String的真实内容还需要偏移量和长度在这个char数组中进一步定位和截取。(查看java源代码可以看到char数组、偏移量和长度定义)
String对象的三个基本特点:
1、不变性;String对象一旦生成,则不能对它进行改变。String对象的这个特性可以泛指为不变模式,即一个对象的状态在对象被创建之后就不再发生变化。另外多说一点,不变模式主要作用在当一个对象需要被多线程共享,并且访问频繁时,可以省略同步和锁的等待时间,从而大幅度的提高系统的性能。
2、针对常量池的优化;当两个string对象拥有相同的值的时候,他们只引用常量池中同一个拷贝。当同一个字符串反复出现时,可以大幅度的节省内存空间。
3、类的final的定义。final类的String对象在系统中不可能有任何子类,这是对系统安全性的保护。
String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写等,熟练使用这些方法在企业开发中会有很大的帮助。
- 截取子字符串
截取子字符串是java中最常用的操作之一,在java中提供了两个截取子字符串的方法:
1 substring(int beginIndex, int endIndex) 2 substring(int beginIndex)
查看substring(int beginIndex, int endIndex)的源码:
1 public String substring(int beginIndex, int endIndex) { 2 if (beginIndex < 0) { 3 throw new StringIndexOutOfBoundsException(beginIndex); 4 } 5 if (endIndex > value.length) { 6 throw new StringIndexOutOfBoundsException(endIndex); 7 } 8 int subLen = endIndex - beginIndex; 9 if (subLen < 0) { 10 throw new StringIndexOutOfBoundsException(subLen); 11 } 12 return ((beginIndex == 0) && (endIndex == value.length)) ? this 13 : new String(value, beginIndex, subLen); 14 }