AI智能
改变未来

Java语言程序设计(二十一)字符串

 我们有时候会遇到涉及字符串处理和文件输入输出的问题,本篇文章介绍字符串和文本文件,它们可以帮助解决这类问题。

      字符串是由字符构成的一个序列,在Java中,字符串是一个对象。

      1.构建一个字符串

      可以用字符串直接量或字符数组创建一个字符串对象,使用如下语法,从字符串直接量创建一个字符串:

      String newString = new String(stringLiteral1);参数stringLiteral1是一个括在双引号内的字符系列,例如\”Welcome to Java\”。还可以用字符数组创建一个字符串。例如构造一个字符串\”Good Day\”

      char[] charArray = {\’G\’,\’o\’,\’o\’,\’d\’,\’ \’,\’D\’,\’a\’,\’y\’};

      String message = new String(charArray);

      2.字符串的比较

      如何比较两个字符串的内容是否相等呢,大家可能会尝试使用==操作符,然而运算符==只能检测string1和string2是否指向同一个对象,但他不会告诉你它们的内容是否相等,因此不能使用==运算符判断两个字符串变量的内容是否相同,取而代之,应该使用equals方法,例如,可以使用如下的方法比较两个字符串:

      if(string1.equals(string2))

          System.out.println(\”string1 ang string2 have the same contents \”);

      else

          System.out.println(\”string1 ang string2 are not equal \”);

      除此之外,compareTo方法也用来对两个字符串进行比较,例如: s1.compareTo(s2),如果s1和s2相等,那么该方法返回值0,如果按字典序(即以统一码的顺序)s1小于s2,方法返回值小于0,否则大于0,该方法返回的具体值是依据s1和s2从左到右数第一个不同字符之间的距离得出的,按照字典序,例如\”abc\”和\”abg\”返回的是c和g的差值-4.

      String类还提供了对字符串进行比较的方法equalsIgnoreCase,compareToIgnoreCase和regionMatches,前两种方法忽略了字母的大小写,最后一种方法比较两个字符串是否部分相等。

      3.字符串长度,字符以及组合字符串

      String类提供获取字符串长度,获取单个字符和连接字符串的方法。

      可以调用字符串的length()方法获取它的长度,例如message.length()返回字符串message的长度,length是String类的一个方法,例如要获取字符串s中的字符个数,必须使用s.length(),而要获取数组a中的元素个数,就必须使用a.length。

      方法s.charAt(index)可以用于提取字符串s中的某个特定字符,其中下标index的取值范围在0到s.length()-1之间,例如message.charAt(0)返回字符w。

      可以使用concat方法连接两个字符串,例如 String s3 = s1.concat(s2);这个语句等价于String s3 = s1+s2;

      4.获取子串

      我们可以用String类中的substring方法从字符串中提取子串,第一种是字符串s,s.substring(beginIndex)表示从beginIndex开始并延续到这个字符串末尾的子串,第二种是s.substring(beginIndex,endIndex)表示获取从beginIndex到endIndex-1的子串,注意,在endIndex处的字符不是子串的一部分

      5.字符串的替换,转换和分隔

       一旦创建了字符串,它的内容就不能改变,但是有一些方法会返回一个源自原始字符串的新字符串(并未改变原始字符串),其中方法toLowerCase和toUpperCase通过将所有字符都转换成小写或者大写来获取一个新字符串,方法trim通过删除字符串两端的空格字符返回一个新字符串,方法replace为替换,例如:\”Welcome\”.replace(\”el\”,\”AB\”)返回一个新字符串WABcome。方法splt可以从一个带特定限定符的字符串中提取标志。

      6.找出字符串中的某个字符或者某个子串

      String类提供了几个重载的indexOf和lastIndexOf方法,它们可以在字符串中找出一个字符或一个子串。s.indexOf(char)返回字符串中第一次出现char的下标,s.indexOf(char,fromindex)返回字符串中fromIndex之后第一次出现char的下标,如果不匹配返回-1,如果将char字符换成string则返回第一次出现字符串s的下标,如果不匹配则返回-1,相对应地,lastIndexOf有相同的用法,只不过是返回最后一次出现的,有fromIndex的是返回fromIndex之前最后一次出现的下标。

      7.字符串与数组之间的转换

      字符串不是数组,但是字符串可以转换成数组,数组也可以转换成字符串,我们可以使用toCharArray方法,例如,下述语句将字符串转换成一个数组:

char[]chars = \”Java\”.toCharArray();因此chars[0]是\”J\”。

      为了将一个字符数组转换成一个字符串,应该使用构造方法String(char[]),例如下面的语句使用String构造方法由一个数组构造一个字符串:

      String str = new String(new char[]{\’J\’,\’A\’,V\’,\’A\’});

      下一篇文章我们会解决检测回文串的问题和十六进制转换十进制的问题。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Java语言程序设计(二十一)字符串