首页 > 代码库 > java-字符串

java-字符串

字符串被广泛应用于java编程语言,它由一连串的字符组成,java中字符串被视为对象。

String对象是不可改变的,以下会提供字符串拼接的方法,也是将字符串拼接起来得到新的字符串对象,原来的字符串对象并未改变。

创建字符串对象

  字符串对象创建的方法有两种,最简单的方式就是将一连串字符置于双引号内,java就会视其为字符串对象:

String greeting = "Hello world!";

  另外一种方法是使用关键词new和 String类所提供的构造器:

char[] helloArray = { ‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘.‘ };
String helloString = new String(helloArray);

  当然String的构造器除了使用字符数组为参数外,还可以使用其他参数。

字符串长度:

String palindrome = "Dot saw I was Tod";
//将字符串palindrome的长度赋值给len
int len = palindrome.length();

字符串的拼接:

  通常我们用到的字符串拼接方法就是将两个字符串用操作符+连接起来:

"Hello," + " world" + "!"

  操作符+也可用于非字符串对象的拼接,当然非字符串对象首先会用其toString方法转换成字符串。

注意:java中字符串不能跨行写,如果要跨行,请用操作符+将其连接。

  另外,String类还提供了concat方法用于字符串的拼接。频繁的字符拼接用此方法可以得到更快的拼接速度(性能佳)。

创建格式化的字符串:

  类似于PrintStream的printf和format方法,String类也有一个format方法,返回格式化的字符串:

String fs;
fs = String.format("The value of the float " +
                   "variable is %f, while " +
                   "the value of the " + 
                   "integer variable is %d, " +
                   " and the string is %s",
                   floatVar, intVar, stringVar);
System.out.println(fs);

字符串与数字对象的转换详见数字类型。

操作字符串中的字符

获取一个或一连串字符

通过String类的charAt方法可以按照序号获得字符串中的某个字符:

String anotherPalindrome = "Niagara. O roar again!"; 
//获取字符串中第十位字符
char aChar = anotherPalindrome.charAt(9);

charAt方法中参数与字符序号的关系如下图所示:技术分享

类似的,substring方法则能够获取字符串中一连串的字符:

方法

描述

String substring(int beginIndex, int endIndex) 返回一个有该字符串从第beginIndex个字符到第endIndex-1个字符组成的新字符串,新的字符串长度为endIndex-beginIndex
String substring(int beginIndex) 返回一个有该字符串从第beginIndex个字符到最后一个字符组成的新字符串。

技术分享

 String类中的其他方法,String类中还有一些其他的好用的方法:

 方法描述
String[] split(String regex)
String[] split(String regex, int limit)
搜索该字符串中与regex(正则表达式)匹配的字符串,然后返回根据其分割的由多个字符串组成的数组,limit参数指定数组元素数量的最大值
CharSequence subSequence(int beginIndex, int endIndex) 返回一个由该字符串的第beginIndex个字符到第endIndex个字符组成的CharSequence对象
String trim() 返回一个由该字符串去掉开始和最后的空格的字符串
String toLowerCase()
String toUpperCase()
返回一个由将该字符串的所有字符大写(小写)后的字符串

 搜索字符串中的字符和子字符串,这些方法用于确定字符串中是否包含某个字符或字符串以及它们的的位置:

方法描述
int indexOf(int ch)
int lastIndexOf(int ch)
返回某个字符在该字符串中第一次(最后一次)出现的位置。
int indexOf(int ch, int fromIndex)
int lastIndexOf(int ch, int fromIndex)
指定开始搜索的位置,并向前(向后)搜索,返回某个字符在该字符串中第一次(最后一次)出现的位置,
int indexOf(String str)
int lastIndexOf(String str)
返回某个字符串在该字符串中第一次(最后一次)出现的位置。
int indexOf(String str, int fromIndex)
int lastIndexOf(String str, int fromIndex)
指定开始搜索的位置,并向前(向后)搜索,返回某个字符串在该字符串中第一次(最后一次)出现的位置,
boolean contains(CharSequence s) 如果该字符串含有指定的charSequence,则返回true

 替换字符串中的字符或者字符串:

 方法描述
String replace(char oldChar, char newChar) 返回一个由该字符串替用指定字符换掉所有的该字符串中出现的指定字符后的新字符串
String replace(CharSequence target, CharSequence replacement) 返回一个由该字符串替用指定字符串换掉所有的该字符串中出现的指定字符串后的新字符串
String replaceAll(String regex, String replacement) 返回一个由该字符串替用指定字符串换掉所有的该字符串中出现的匹配指定正则表达式字符串后的新字符串
String replaceFirst(String regex, String replacement) 返回一个由该字符串替用指定字符串换掉第一个该字符串中出现的匹配指定正则表达式字符串后的新字符串

字符串比较与匹配

方法 描述
boolean endsWith(String suffix)
boolean startsWith(String prefix)
如果该字符串以suffix结尾(或者以prefix开头)则返回true
boolean startsWith(String prefix, int offset) 如果从第offset个字符以后开始,该字符串以prefix开头,则返回true
int compareTo(String anotherString) 将该字符串按照字面和参数字符串进行比较,如该字符串比参数大,则返回大于零的整数,等于则返回0,小于则返回小于零的整数
int compareToIgnoreCase(String str) 忽略大小写,将该字符串按照字面和参数字符串进行比较,如该字符串比参数大,则返回大于零的整数,等于则返回0,小于则返回小于零的整数
boolean equals(Object anObject) 判断该字符串与参数是否相等(字符个数,字符的顺序完全相等),如相等,则返回true
boolean equalsIgnoreCase(String anotherString) 忽略大小写,判断该字符串与参数是否相等(字符个数,字符的顺序完全相等),如相等,则返回true
boolean regionMatches(int toffset, String other, int ooffset, int len) 如该字符串的指定长度子字符串与参数的子字符串相等,则返回true,toffset是该字符串子字符串的起始序号,ooffset是参数字符串的子字符串的起始序号,len是子字符串的长度。
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)

如该字符串的指定长度子字符串与参数的子字符串相等,则返回true,toffset是该字符串子字符串的起始序号,ooffset是参数字符串的子字符串的起始序号,len是子字符串的长度。

ignoreCase指定是否忽略大小写。

boolean matches(String regex) 如该字符串能够匹配指定的正则表达式,则返回true

StringBuilder类

StringBuilder类与String类类似,也有length方法,但是StringBuilder对象是可变的(长度和字符),一般情况下,我们只使用到String,只有在对于字符串的操作效率要求更高(比如字符串的拼接)时,我们才有必要用StringBuilder。

  StringBuilder可以通过toString方法转换成String对象,我们也可以用String对象为参数构造StringBuilder对象。

java-字符串