String及其常用API

String是不可变对象

  • String属于java.lang包,定义时使用了final修饰,对象不可改变,不可被继承
  • 字符串的引用可以重新赋值
  • 字符串地城封装了字符数组及针对字符数组的操作算法
  • java字符串中任何一个字符(无论中文还是英文)对应16位(两个字节)的定长Unicode编码。
  • 例子:
    String及其常用API_第1张图片

String常量池

  • java为了提高性能,静态字符串(字面量、常量、常量连接的结果)在常量池中创建,并尽量使用同一个对象,重用静态字符串。
  • 对于重复出现的字符串直接量,JVM会首先在常量池中查找,如果存在即返回该对象。
    例子:如果用debug工具会发现s1,s2,s3的地址都是一样的,说明他们指向的是同一个对象,而ss是变量连接,会新建一个字符串对象,跟前三个不同。使用new关键字也会新建一个对象。
String s1 = "abc";
String s2 = "abc";
String s3 = 'a'+"bc";//字面量连接
String ss1='a';
String ss2="bc";
String ss=ss1+ss2;//变量连接
String sss = new String("abc");//new关键字,新建对象

.length() 获取字符串长度

eg:str.length()

注意:这里后面有小括号,而获取数组长度时没有小括号。

.indexOf()检索字符串中某个字符或某段字符的下标。

有两种重载:

  • int indexOf(String str),括号中可以是字符串或者字符,返回其第一次出现的下标,若不存在返回-1.
  • int indexOf(String str,int fromIndex),从字符串的fromIndex位置开始检索

.lastIndexOf()

和indexOf类似,不过是查找最后一个出现的位置。
str.lastIndexOf(str,index),从下标index往前查找最后一个出现的位置

.substring()返回一个字符串的子字符串

String substring(int beginIndex, int endIndex)返回区间 [beginIndex,endIndex) 内的子字符串,注意包含开始,不包含结束下标。
可以不写结束下标,默认从beginIndex一直到结束。
还可以这样用:substring(x,x+n);截取从x开始的n个字符。

charAt(index)返回下标对应的字符

trim()去掉字符串前后的空格

若源字符串前后有空格,则返回它去掉空格后的副本,若没有则返回源字符串。常用语检查用户无意间输入的空格。

startsWith()/endsWith()检测字符串是否已制定字符串开头或结尾。

  • 返回值是boolean类型
  • 括号里可以是它本身,返回true
  • 可以检测文件格式:str.endsWith(".mp4")

StringBuilder封装可变字符数组

对象创建后可以通过调用方法改变其封装的字符序列

StringBuilder的常用方法:

  • StringBuilder append(String str) 追加字符串
  • StringBuilder insert(int dstOffset ,String s) 插入字符串
  • StringBuilder delete(int start, int end) 删除字符串
  • StringBuilder replace(int start, int end, String str) 替换字符串
  • StringBuilder reverse() 字符串翻转

注意:上面所有涉及到前后下标的都是前面包含,后面不包含

你可能感兴趣的:(学习日志)