java基础---字符串string

时间:2022-06-16 05:44:24

1、字符创的概念

  java字符串就是Unicode字符序列。例如,串“Java\u2122”由5个Unicode字符J、a、v、a和TM。java没有内置的字符串类型,而是在标准库Java类库中提供了一个预定义类String。

2、子串

  String类的substring方法可以从一个较大的字符串提取出一个子串。

String    greeting ="Hello";
String s = greeting.substring(0,3);

  创建了一个由字符“Hel”组成的字符串。 substring方法的第二个参数是不想复制的第一个位置。这里要复制位置为0、1和2(从0到2, 包括0和2)的字符。在substring中从0开始计数,直到3为止,但不包含3。

  substring的工作方式有一个优点:容易计算子串的长度。字符串s.substring(a, b)的长度为ba。例如,子串“Hel”的长度为3-0=3。

3、拼接

  与大多数程序设计语言一样,Java语言允许使用+号连接两个字符串。

String  str1 = "I Love java!";
String str2= "I Love China!";
String str3 = str1+str2;

  上述将“I Love Java!I Love China”赋值给了str3;e(注意,单词之间没有空格,+号按照给 定的次序将两个字符串拼接起来)。 当将一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串。

4、不可变字符串

  String类没有提供用于修改字符串的方法,如果希望将greeting的内容修改为“Help!”,不能直接地将greeting的最后两个位置的字符修改为‘P’和‘!’!但是可以用替换来做出“修改”这一意义。

  greeting = greeting.substring(0,3)+"p!";

上述语句将greeting当前值修改为Help!

  由于不能修改Java字符串中的字符,所以在Java文档中将String类对象称为不可变字符串, 如同数字3永远是数字3一样,字符串“Hello”永远包含字符H、e、l、l和o的代码单元序列, 而不能修改其中的任何一个字符。当然,可以修改字符串变量greeting,让它引用另外一个字 符串,这就如同可以将存放3的数值变量改成存放4一样。

5、检测字符串是否相等

  可以使用equals()方法检测两个字符串内容是否相等。

  s.equals(t); 如果字符串s与字符串t相等,返回true,否则返回false。需要注意,s和t都是字符串变量,也可以是字符串常量。

  一定不能用“==”来检测两个字符串是否相等!这个运算符只能够确定两个字符串是否防放置在同一个位置上,比较的是内容和地址都要相等时2个字符串才会相等。当然,如果字符串放在同一个位置上,它们必然相等,但是完全有可能内容相同的多个字符串在拷贝放置在不同位置上。

  String greeting  = "hello";

  if(gerrting =="hello")

  //probably  true  

  if(greeting.substring(0,3)=="hel")

  //probably false;

  如果虚拟机始终将相同的字符串共享,就可以使用"=="运算符判断是否相等,但是实际上只有字符串常量才是共享的,而+或substring 等操作产生的结果并不是共享的。

6、字符串API

• char charAt (int index) 返回给定位置的代码单元。除非对底层的代码单元感兴趣,否则不需要调用这个方法。

• int codePointAt(int index) 5.0 返回从给定位置开始或结束的代码点。

• int offsetByCodePoints(int startIndex, int cpCount) 5.0 返回从startIndex代码点开始,位移cpCount后的代码点索引。

• int compareTo(String other) 按照字典顺序,如果字符串位于other之前,返回一个负数;如果字符串位于other之后, 返回一个正数;如果两个字符串相等,返回0。

• boolean endsWith(String suffix) 如果字符串以suffix结尾,返回true。

• boolean equals(Object other) 如果字符串与other相等,返回true。

• boolean equalsIgnoreCase(String other) 如果字符串与other相等(忽略大小写),返回true。

• int index0f(String str)

• int index0f(String str, int fromIndex) Java基本的程序设计结构 47 java.lang.string 1.0

• int index0f(int cp) • int index0f(int cp, int fromIndex) 返回与字符串str或代码点cp匹配的的第一个子串的开始位置。这个位置从索引0或 fromIndex开始计算。如果在原始串中不存在str,返回-1。

• int lastIndex0f(String str)

• int lastIndex0f(String str, int fromIndex)

• int lastindex0f(int cp) • int lastindex0f(int cp, int fromIndex) 返回与字符串str或代码点cp匹配的最后一个子串的开始位置。这个位置从原始串尾端或 fromIndex开始计算。

• int length( ) 返回字符串的长度。

• int codePointCount(int startIndex, int endIndex) 5.0 返回startIndex和endIndex-1之间的代码点数量。没有配成对的代用字符将计入代码点。

• String replace(CharSequence oldString,CharSequence newString) 返回一个新字符串。这个字符串用newString代替原始字符串中所有的oldString。可以用 String或StringBuilder对象作为CharSequence参数。

• boolean startsWith(String prefix) 如果字符串以preffix字符串开始,返回true。

• String substring(int beginIndex) • String substring(int beginIndex, int endIndex) 返回一个新字符串。这个字符串包含原始字符串中从beginIndex到串尾或endIndex-1的所 有代码单元。

• String toLowerCase( ) 返回一个新字符串。这个字符串将原始字符串中的所有大写字母改成了小写字母。

• String toUpperCase( ) 返回一个新字符串。这个字符串将原始字符串中的所有小写字母改成了大写字母。

• String trim( ) 返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格。