Java学习笔记-String类

572 阅读2分钟

1. String类的两种实例化方式

  1. 直接赋值: String str = "Hello World"
  2. 构造方法:String str = new String("Hello World")

2. 常见面试题:请解释String类的两种对象实例化方式的区别

直接赋值:只会开辟一块堆空间,并且会自动保存在对象池中以供下次重复使用。

构造方法:会开辟两块堆内存空间,其中有一块空间将成为垃圾,并且不会自动入池,但用户可以使用intern()方法手工入池。

在开发中,永远采用直接赋值的方式实例化String对象。

3. 字符串的比较1

在实际的开发中,所有字符串的比较都不用"=="去比较,均使用 equals() 完成。

String str1 = "hello";
String str2 = new String("hello");

System.out.println(str1.equals(str2));

// >> true

4. 字符串一旦定义则不可改变

直接修改String会产生垃圾,因为直接修改将开辟新的堆内存,并修改引用关系。

如果想要修改,使用StringBuffer和StringBuilder代替。开发中,少量修改也可以,没必要关注产生的垃圾问题。

5. String类的常用方法

5.1 字符与字符串

String str = "hello";
char c = str.charAt(0); // charAt:返回指定索引对应的字符信息

char data[] = str.toCharArray(); // toCharArray:将字符串以字符数组的形式返回

5.2 字节与字符串

String str = "hello";
byte[] data = str.getBytes(); // getBytes: 将字符串变为字节数组

5.3 字符串的比较2

String str1 = "Hello";
String str2 = "HEllo";

System.out.println(str1.equals(str2)); 
System.out.println(str1.equalsIgnore(str2));  // 忽略大小写
System.out.println(str1.compareTo(str2)); 
// compareTo()方法返回int类型,大于(返回结果大于0),小于(返回结果小于0),等于(返回结果等于0)

字符串的查找

  • contains(String str) 判断指定的内容是否存在
  • indexOf(String str) 从前向后查找指定字符串的位置,找不到返回-1
  • lastIndexOf(String str) 从后向前查找指定字符串的位置,找不到返回-1
  • startsWith(String prefix) 判断是否以指定的字符串开头

字符串的替换

  • replaceAll(String regex, String replacement) 用新的内容代替旧的内容
  • replaceFirst(String regex, String replacement) 替换首个满足条件的内容

字符串的截取

substring(int begin, int end);

字符串的拆分

split(String regex);

其他方法

  • concat(String str); 字符串拼接
  • trim() 去掉字符串中左右两边的空格,中间空格保留
  • length() 长度
  • isEmpty() 判空""