2019年7月15日
API
编码:把文字转成具体的数字,码表:就是转换规则
当代码存储在.java文件中时,默认使用UTF-8进行编码
编译生成.class,加载到内存时,期默认使用UTF-16进行编码
当内存执行完成之后,要把内存的字节转成字符输出到程序中,
如果没有指定编码就按默认的系统平台码来进行编码;
windows中文版:默认GBK进行编码
Linux 默认UTF-8进行编码;
String 重要方法
关于getBytes();
将String编码
指定byte编码的方法:
将一个字符串转换成一个字节数组
byte[]bt=a.getBytes(“utf-8”);
将字符数组转换成字符串,若不指定转换编码,则转换时为默认
系统平台码;不指定可能会出现乱码;
String s = new String(bt,“utf-8”);
可以转换字节数组的部分信息,为一个新的字符串对象;
方法
String s = new String(bt,0,3,“utf-8”);
把部分字节数组可以按照指定的码表进行转换成新的字符串对象,
如果不指定,就按照默认的系统平台码进行转换;
new String(byte[],int offeset,int length)
hashCode();返回一个字符串的哈希码值
indexOf(String a—子串);
返回一个子串在主串中的下标值,如果不是原串的子串,就会返回
一个-1;
若有多个相同内容,若想向后查找则可以定义起始位置
indexOf(“xxx”,n----从第n个下标开始查找);
intern();
String a = “123”;
String b = new String(“123”);
b=b.intern();
此时a与b地址值一致
把指向堆内存的引用转为指向常量池
isEmpty();
判断字符串是否是一个空字符串
replace(old char , new char )
把原字符串中的所有的指定字符,替换成新的字符串返回一个新
字符串,不会覆盖原字符串
substring(开始下标);
给定起始下标,从下标开始往后截取成一个新字符串,进行返回
substring(开始下标,结束下标);
给定起始下标与结束下标,从开始下标至结束下标之前截取成一
个新字符串进行返回;
toUpperCase();/toLowerCase:
将字符串所有内容变成大写/将所有字符串内容变成小写
trim();删除字符串前面和尾部的空格
valueOf();把整型值,转换成一个新的字符串
正则表达式(Pattern类)
以下为部分数量词----控制字符出现的次数;
提供大量用于匹配字符串的规则以及语法
String s = “abc”;
用compile指定匹配规则
Pattern p = Pattern.compile(“abc”);
匹配只有abc的字符串;
关联待匹配的字符串;
输入要匹配的字符串
Matcher m =p.mathcer(s);
方法
.matches(添加匹配规则);
正则表达式另一种方法
从多个字符串中匹配
asd/qwe/zxc/
.matches("[asd][qwe][zxc]");[]中内容任取一个符合的
若匹配0-9的数字,正则表达式可以提供范围
.matches([0-9][a-z]);
匹配除任取数字或者字母之外的方法
.marches([^asd]);除asd之外的
.marches(".");匹配任意字符
正则转义匹配字符串中的 “.”
任意字符同理
x.matches("\.")
+控制的是前面的字符
matches("[0-9].+[a-z]");最少出现一次
matches("[0-9].?[a-z]");最多出现一次
matches("[abc].*\d");中间可以不出现,也可以出现多个
matches没有最大区间。只有最小区间,因为最大区间会取到负数
所以不允许
matches(a{5});匹配aaaaa字符串
matches(a{5,});至少出现五次
matches(a{m,n});至少出现m-n次
判断字符串中是否出现了 ab
.matches(".ab.")
匹配字符串是否出现了两个ab
.matches(".*ab.ab.")
第二种写法,括号内的小括号()----捕获组
后边的\n为捕获组的编号;
.matches(".(ab).\1.*")
捕获组的编号问题-----从第一个左边括号开始编号
例如(a(b(c)d)e)
1–abcde
2–bcd
3–c
使用捕获组匹配叠字
matches("(.)\1+")
aabb形式
matches("(.)\1(.)\2");
abab形式
matches("(…)\1");