MENU

String、StringBuffer、StringBuilder

June 5, 2018 • Read: 2489 • Java阅读设置

String

  • 字符串关系运算符"=="比较的是该字符在堆内存中的地址。而使用equals()方法则比较的是内容
String str1 = "Hello";
String str2 = new String("Hello");
System.out.println(str1 == str2);//false
System.out.println(str1.equals(str2));//true

  • String字符串是不可更改的,对字符串进行算术运算会在堆内存中开辟新的空间,而运算之前栈内存中的变量指向的堆内存地址是不变的,改变的是新的地址和内容
String str1 = "Hello";
String str2 = str1 + " World";
System.out.println(str2);//Hello World

  • 字符串Length()方法获取String变量的长度,与数组不同,数组是Length变量
  • 将字符串转换成数组toCharArray()
String str = "abcdefg";
char c[] = str.toCharArray();
  • 从字符串中取出指定位置的字符:charAt()(从0开始)
  • 过滤字符串中存在的字符:indexOf(),返回的值是下标
String str = "abcdefg";
System.out.println(str.indexOf("d"));//3
  • 去掉字符串的首尾空格字符:trim()
String str = "   111  ";
System.out.println(str.trim());//111
  • 从字符串中取出子字符串:subString()
  • 大小写转换:toLowerCase()toUpperCase()
  • 判断字符串的开头结尾字符:endsWith()startWith()
  • 替换String字符串中的一个字符:replace()

StringBuffer

缓冲区,本身也是操作字符串,但是与String不同,StringBuffer是可以更改的

  • `append()**:将参数追加到序列中
  • `insert()**:有两个参数,第一个参数表示插入的位置,第二个参数表示插入的值
  • replace(int start,int end,String str):从start开始,直到end(不包含end)的字符串用str替换,如果长度不够,就直到结尾
  • toString():返回此序列的字符串表示形式,StringBuffer不能直接输出,要转换成String类型然后输出

StringBuilder

一个可变的字符序列,该类被设计作用StringBuffer的简易替换,用在字符串缓冲区被单个线程使用的时候。建议优先考虑该类,速度比StringBuffer要快。但是如果涉及到线程安全方面,建议使用StringBuffer

Last Modified: February 8, 2020
Archives Tip
QR Code for this page
Tipping QR Code
Leave a Comment