字符串 String

简介

String 是一组字符组成的数据整体。用双引号括起来。

字符串类的全名是 java.lang.String

在 java 中,字符串也是对象。
字符串是按照字节存储的。

在字符串中,可以使用反斜线对特殊字符进行转义。
常用的转义字符有 \', \", \t, \n, \\

// 两种写法都行
String name1 = "jack";  // 对于这种写法,JVM 自动做了很多优化,比如如果多个变量的值是同一个字符串,它们会指向同一个内存空间。
String name2 = new String("rose");

// 第三种写法:char 数组生成字符串
char[] c = {'a', 'b', '中', 'c'};
String name3 = new String(c);
System.out.println(name3); // ab中c

字符串的拼接

  • 加 + 号
  • concat 方法
String s1 = "a" + "b";
String s2 = "ab";
System.out.println(s1.hashCode()); // 3105
System.out.println(s2.hashCode()); // 3105
// 只要 + 号两侧,任意一个是字符串,就会进行字符串的拼接
String s3 = 1 + "abc";
s1 = s1.concat("ccc");
System.out.println(s3); // 1abc
System.out.println(s1); // abccc

字符串的比较

  • 是否相等:equals, equalsIgnoreCase
  • 比较大小
    • compareTo (正数,左边的大;负数,左边的小;0 相等)
    • compareToIgnoreCase
String s4 = "Ab";
System.out.println(s2.equals(s4)); // false
System.out.println(s2.equalsIgnoreCase(s4)); // true
System.out.println(s2.compareTo(s4)); // 32,因为 a 的 ASCII 码是 97,而 A 的是 65
System.out.println(s2.compareToIgnoreCase(s4)); // 0

字符串的截取

  • substring 第一个参数表示起始位置(包含它)的索引,第二个参数表示结束位置(不包含它)的索引。(左闭右开
  • split 按照指定的分隔符,对字符串进行拆分
  • trim 剪掉字符串两端的空白字符
System.out.println(s1.substring(0, 4));  // abcc

字符串的替换

  • replace 将旧子串全部替换为新子串
  • replaceAll 按照指定的多个规则,将多个不同的旧子串替换为新子串
String s = "hello_world_hello";
System.out.println(s.replace("hello", "hi")); // hi_world_hi
System.out.println(s.replaceAll("hello|world", "hi")); // hi_hi_hi

字符串的大小写转换

  • toLowerCase
  • toUpperCase
String s5 = "helloWorld";
System.out.println(s5.toLowerCase()); // helloworld
System.out.println(s5.toUpperCase()); // HELLOWORLD
System.out.println(s5); // helloWorld

字符串的查找

  • indexOf 获取子串第一次出现的位置(索引)
  • lastIndexOf 获取子串最后一次出现的位置(索引)
  • charAt 获取指定位置的字符
  • contains 判断是否包含子串
  • startsWith 判断是否以子串开头
  • endsWith 判断是否以子串结尾
  • isEmpty 判断是否为空字符串
System.out.println(s.indexOf("hello")); // 0
System.out.println(s.lastIndexOf("hello")); // 12
System.out.println(s.charAt(0)); // h
System.out.println(s.contains("hello")); // true
System.out.println(s.startsWith("hello")); // true
System.out.println(s.endsWith("hello")); // true
System.out.println("".isEmpty()); // true
System.out.println(" ".isEmpty()); // false

字符串的高效创建和使用

StringBuilder 类用于创建 StringBuilder 类型的字符串对象。

StringBuilder 对象的字符串操作会改变字符串本身,也就是说操作的是同一个字符串,不会额外开辟空间存储新的字符串。

// StringBuilder 创建字符串
// 它的方法会改变字符串对象本身
StringBuilder s6 = new StringBuilder();
for (int i = 0; i < 10; i++) {
    s6.append(i);
}
System.out.println(s6); // 0123456789
System.out.println(s6.length()); // 10
System.out.println(s6.reverse()); // 9876543210
System.out.println(s6.insert(2, "aa")); // 98aa76543210
System.out.println(s6.toString()); // 98aa76543210
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值