10.10-字符串

String类

相当于char[]+操作(方法)

char[]本身就是一串字符,在Java中可以作为字符串来使用

例子

package day10_10;

import java.util.Arrays;

public class StringDemo01 {
	public static void main(String[] args) {
		char[]chs1 = {'中','国'};
		char[]chs2 = {'台','湾','省'};
		//将chs1和chs2拼接在一起
		chs1 = Arrays.copyOf(chs1, chs1.length+3);
		System.arraycopy(chs2, 0, chs1, 2, 3);
		System.out.println(Arrays.toString(chs1));
		
		String s1 = "中国";
		String s2 = "台湾省";
		//将s1与s2拼接在一起
		String s3 = s1.concat(s2);
		System.out.println(s3);
		
	}
}

注意事项

  1. char[]只有数据,没有操作(方法)

  2. 一串字符就是字符串:String/char[]/StringBuilder/StringBuffer

  3. 字符串的字面量都是String类型

  4. String类中的常量均为static final修饰

  5. String类的内部就是一个char[]

    String类有一个原则,对象内容不变,String对象永远不变;这使得String类使用起来与基本类型差不多。

    String字面量相同时,会替换为同一个String对象引用;这是由于常量池拥有常量优化机制,会将相同的字面量优化为同一个

常用方法

  1. String类重写了Object类中的toString/equals/hashCode方法

  2. String字符串中所有的字符都有下标,下标从0开始,到lenght()-1结束

  3. 常用API

    • charAt() 根据给定的下标获取对应的字符

    • indexOf() 根据给定的字符获取对应的下标

    • lastIndexOf() 查看给定字符串在当前字符串中最后一次出现的位置

    • toUpperCase() 将当前字符串中所有的小写字母转为大写

    • toLowerCase() 将当前字符串中所有的大写字母转为小写

    • trim() 去除当前字符串两边的空白

    • startsWith() 判断当前字符串是否以给定的字符串起始

    • endsWith() 判断当前字符串是否以给定的字符串结尾

    • length() 获取当前字符串的长度(字符量)

    • equals() 比较两个字符的内容是否相等

    • equalsIgnoreCase() 忽略英文大小写比较两个字符串内容是否相等

    • substring() 截取字符串

    • toCharArray() 将当前字符串转换为对应的字符数组

    • getBytes() 根据给定的字符集将当前字符串转换为对应的字节序列

例子一

例子二

例子三

正则表达式

负责字符串的匹配处理,一般用于验证字符串的格式

正则表达式本身也是一个字符串

格式

字符集

  • [123456789] 表示123456789其中之一

  • [1-9] 表示1-9的数组(与上一个同义)

  • [^12345] 表示除了12345以外的所有

  • [a-z] 表示a-z之间的字符

  • [0-9a-zA-Z] 表示0-9az-A-Z其中之一

  • {6} 表示出现了6次

  • {8,10} 表示出现了8-10次

  • ……

例子一

定义正则表达式,表示8~15位数字、字母、下划线组成的密码

预定义字符集

  • \d 表示任意数字,等价于[0-9]

  • . 表示任意字符

  • \w 表示单词字符,等价于 [0-9a-zA-Z_]

  • \s 表示匹配空白

  • \D 表示非数字

  • \S 表示非空白

  • \W 表示非单词字符

  • ? 表示出现了0-1次

  • + 表示出现了1次以上

  • * 表示出现了0~n次

  • | 表示或者

  • & 表示并且

例子二

书写一个正则表达式,用于验证邮政编码的格式(6位纯数字)

例子三

验证三种手机号码

15951618999

+86 15951618999

0086 15951618999

如何验证

使用String类中的matches(String regex)方法

例子四

利用正则表达式替换字符串内容

例子五

使用String类中的replaceAll()方法

StringUtils类

此类为commons-lang jar包所携带的扩展内容

该jar包是由Apache组织提供的,用于扩展Java中lang包中类的一些功能

例子

StringBuilder

StringBuilder是用来修改字符串的类,是一个变长字符序列

StringBuilder JDK1.5 效率较高,线程不安全

StringBuffer JDK1.0 效率较低,线程安全

StringBuilder类中方法

append/delete/replace/instert

字符串的增/删/改/插操作方法

返回值都是StringBuilder对象本身的引用(表明是同一个对象)

例子

reverse

字符串的反转方法

例子

最后更新于