4.7串讲

4.7串讲 Java基础API

文章目录

  • 4.7串讲 Java基础API
    • 字符串
      • 字符
      • 字符串
      • `StringBulider`,`StringBuffer`
    • 内存结构
    • 正则表达式
      • 字符
      • 字符类
      • 预定义字符类
      • POSIX字符类(仅US-ASCII)
      • java.lang.Character 类(简单的 java 字符类型)
      • Unicode 块和类别的类
      • 边界匹配器
      • Greedy 数量词
      • Reluctant 数量词
      • Possessive 数量词
      • Logical 运算符
      • Back 引用
      • 引用
      • 特殊构造(非捕获)
    • 集合
      • ArrayList
      • HashSet
      • Collections常用方法

字符串

字符

  • 在java中字符类型是char

  • 用单引号括起来的,有且只有1个

  • ‘a’ ‘b’ ‘中’

字符串

  • 0或多个字符组成

  • java中专门提供了一个类用来处理字符串(String)

  • String是在java的默认包下(java.lang),无需手动导入即可使用

  • 用双引号引起来的,可以为空,也可以是多个

  • String类提供一些列的字符串处理方法

方法 介绍
length() 获取字符串长度
trim() 去除当前字符串两边的空白符
charAt() 返回当前字符指定位置上的字符,根据位置擦查找字符
indexOf() 检索给定字符串在当前字符串中第一次出现的位置
toUpperCase() 将当前字符串中英文部分转换为大写
toLowerCase() 将当前字符串中英文部分转换为小写
substring() 截取当前字符串中指定范围的字符串(含头不含尾)
split() 根据匹配项拆分字符串为字符串数组
startsWith() 判断当前字符串中是否以给定字符串开始
endsWith() 判断当前字符串中是否以给定字符串结尾
equals() 字符串之间做比较
lastIndexOf() 检索给定字符串在当前字符串中最后一次出现的位置
isEmpty() 判断当前字符串是否为空
matchs() 指定此字符串是否与给定的正则表达式匹配
valueOf() 由基本数据类型转换成String类型
replace() 查找并替换与regexp相匹配的子字符串
  • 字符串一旦创建就不可以改变

StringBuliderStringBuffer

  • 用法一样

  • StringBuilder:效率高,但是线程不安全

  • StringBuffffer:效率低,但是线程安全

  • 创建一个对象,在一个对象上进行修改

  • 常用方法:

方法 介绍
append() 追加内容
delete() 删除部分内容
insert() 插入内容
replace() 替换部分内容(含头不含尾)
reverse() 反转字符串内容

内存结构

4.7串讲_第1张图片

正则表达式

  • 作用: 主要用来判断字符串是否符合某种格式,或者查找、替换规则字符串
  • 使用场景如: 用户名,邮箱、手机号验证等
  • java 中的正则在java.util.regex包下

字符

x 字符 x
\\ 反斜线字符
\0n 带有八进制值 0 的字符 n (0 <= n <= 7)
\0nn 带有八进制值 0 的字符 nn (0 <= n <= 7)
\0mnn 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 带有十六进制值 0x 的字符 hh
\uhhhh 带有十六进制值 0x 的字符 hhhh
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符

字符类

[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)

预定义字符类

. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]

POSIX字符类(仅US-ASCII)

\p{Lower} 小写字母字符:[a-z]
\p{Upper} 大写字母字符:[A-Z]
\p{ASCII} 所有 ASCII:[\x00-\x7F]
\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]
\p{Digit} 十进制数字:[0-9]
\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} 可见字符:[\p{Alnum}\p{Punct}]
\p{Print} 可打印字符:[\p{Graph}\x20]
\p{Blank} 空格或制表符:[ \t]
\p{Cntrl} 控制字符:[\x00-\x1F\x7F]
\p{XDigit} 十六进制数字:[0-9a-fA-F]
\p{Space} 空白字符:[ \t\n\x0B\f\r]

java.lang.Character 类(简单的 java 字符类型)

\p{javaLowerCase} 等效于 java.lang.Character.isLowerCase()
\p{javaUpperCase} 等效于 java.lang.Character.isUpperCase()
\p{javaWhitespace} 等效于 java.lang.Character.isWhitespace()
\p{javaMirrored} 等效于 java.lang.Character.isMirrored()

Unicode 块和类别的类

\p{InGreek} Greek 块(简单块)中的字符
\p{Lu} 大写字母(简单类别)
\p{Sc} 货币符号
\P{InGreek} 所有字符,Greek 块中的除外(否定)
[\p{L}&&[^\p{Lu}]] 所有字母,大写字母除外(减去)

边界匹配器

^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾

Greedy 数量词

X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

Reluctant 数量词

X?? X,一次或一次也没有
X*? X,零次或多次
X+? X,一次或多次
X{n}? X,恰好 n 次
X{n,}? X,至少 n 次
X{n,m}? X,至少 n 次,但是不超过 m 次

Possessive 数量词

X?+ X,一次或一次也没有
X*+ X,零次或多次
X++ X,一次或多次
X{n}+ X,恰好 n 次
X{n,}+ X,至少 n 次
X{n,m}+ X,至少 n 次,但是不超过 m 次

Logical 运算符

XY X 后跟 Y
X|Y X 或 Y
(X) X,作为捕获组

Back 引用

\n 任何匹配的 nth 捕获组

引用

\ Nothing,但是引用以下字符
\Q Nothing,但是引用所有字符,直到 \E
\E Nothing,但是结束从 \Q 开始的引用

特殊构造(非捕获)

(?:X) X,作为非捕获组
(?idmsux-idmsux) Nothing,但是将匹配标志i d m s u x on - off
(?idmsux-idmsux:X) X,作为带有给定标志 i d m s u x on - off
的非捕获组 (?=X) X,通过零宽度的正 lookahead
(?!X) X,通过零宽度的负 lookahead
(?<=X) X,通过零宽度的正 lookbehind
(?X) X,作为独立的非捕获组

集合

4.7串讲_第2张图片

ArrayList

List<String> list = new ArrayList<>();
list.add("zhangsan");
list.add("lisi");
list.add("王麻子");
list.add("王麻子");
list.add("tom");
for (int i=0;i<list.size();i++){
    System.out.println(list.get(i));
}
System.out.println("---------------");
for (String name: list ) {
    System.out.println(name);
}
System.out.println("---------------");
Iterator it = list.iterator();
while(it.hasNext()){
    System.out.println(it.next());
}
System.out.println("---------------");
list.forEach(name-> System.out.println(name));
System.out.println("---------------");
list.forEach(System.out::println);

HashSet

Set<String> set = new HashSet<>();
set.add("zhangsan");
set.add("lisi");
set.add("王麻子");
set.add("王麻子");
set.add("tom");
Iterator<String> it = set.iterator();
while(it.hasNext()){
    System.out.println(it.next());
}
System.out.println("------------");
for (String name: set ) {
    System.out.println(name);
}
System.out.println("------------");
set.forEach(name-> System.out.println(name));
System.out.println("------------");
set.forEach(System.out::println);

Collections常用方法

方法 介绍
add() 向集合中添加一个元素,成功添加则返回true,否则返回false
addAll() 将参数集合中的元素添加到当前集合中,添加后当前集合发生改变返回true
list() 返回一个数组列表,包含指定枚举返回元素
remove() 从集合中删除给定元素(equals()相等为true),成功删除则返回true
replaceAll() 用于将列表中一个指定值的所有出现替换为另一个
reverse() 集合反转

集合泛型类型只能写包装类,不能用基本类型

你可能感兴趣的:(培训之旅,java,jvm,正则表达式)