导图社区 常用类封装类、String、正则表达式知识点学习笔记
字符串String & 正则表达式 weixin_47166787的博客 168 1. String类中split()方法的使用 public String[] split(String regex){ // 参数limit默认为0 return...
编辑于2022-11-07 18:11:20 广东常用类封装类、String、正则表达式知识点学习笔记
封装类
Integer
Integer.toBinaryString(5)
Integer.toHexString(12)
Integer.toOctalString(12)
Character
Character.isDigit(c1)
Character.isLetter(c1)
包括英文,中文字符在内
Character.isLowerCase(c3)
Character.isUpperCase(c3)
Character.toLowerCase(c3)
Character.toUpperCase(c3)
自动装箱:基本类型->封装类类型
自动拆箱:封装类类型->基本类型
hashCode(),equals(),toString()已经重写
除了Boolean和Character外,其它的包装类都有valueOf()和parseXXX方法,并且还具有 byteValue(),shortValue(),intValue(),longValue(),floatValue()和doubleValue()方法等常用的方法
String转换成Integer
Integer integer = new Integer(str); // 方式一
Integer integer = Integer.valueOf(str); //方式二
String转换成int
int i2 = Integer.parseInt(str);
Ingeter转换成String
String str2 = integer.toString();
把Integer转换成int
int i = integer.intValue();
把int转换成Integer
Integer integer2 = new Integer(i);//
Integer integer2 = Integer.valueOf(i);
Integer integer2 = i;//自动装箱
把int转换成String
String str3 = String.valueOf(i2); // 方式一
String str4 = i2 + ""; // 方式
String
java.lang.String代表不可变的字符序列
创建字符串实例的方式
字符串常量
新字符串对象
构造方法
String( )
String(byte[] bytes, int offset, int length)
String(char[] value, int offset, int count)
boolean equals(Object)
boolean equalsIgnoreCase(String str)
int compareTo(String value)
指定者:接口 Comparable 按字典顺序比较两个字符串。
如果两个字符串相等,则返回 0;
如果字符串在参数值之前,则返回值小于 0;
如果字符串在参数值之后,则返回值大于 0
int compareToIgnoreCase(String val) 按字典顺序比较两个字符串,不考虑大小写
boolean startsWith(String value) 检查一个字符串是否以参数字符串开始。
boolean endsWith(String value) 检查一个字符串是否以参数个字符串结束。
public int indexOf(int ch) 返回指定字符ch在此字符串中第一次出现处的索引值;如果未出现该字符,则返回 -1。
public int indexOf(String str) 返回第一次出现的指定子字符串str在此字符串中的索引值;如果未出现该字符串,则返回 -1。
public int indexOf(int ch, int fromIndex) fromIndex - 开始搜索的索引
public int lastIndexOf(int ch) 返回最后一次出现的指定字符在此字符串中的索引值;如果未出现该字符,则返回 -1。
public int lastIndexOf(String str) 返回最后一次出现的指定子字符串str在此字符串中的索引值;如果未出现该字符串,则返回 -1。
public char charAt(int index) 从指定索引index处提取单个字符,索引中的值必须为非负
public String substring(int index) 提取从位置索引index开始直到此字符串末尾的这部分子字符串
public String substring(int beginIndex, int endIndex) 提取从 beginindex开始直到 endindex(不包括此位置)之间的这部分字符串
public String concat(String str) 将指定字符str串联接到此字符串的结尾成为一个新字符串返回。
public String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。
public String trim() 返回字符串的副本,忽略前导空白和尾部空白
public String toUpperCase(); 将此字符串中的所有字符都转换为大写
public String toLowerCase(); 将此字符串中的所有字符都转换为小写
public int length() 获得此字符串的长度
==号和equals方法比较的区别
正则表达式
常用类
String
boolean matches(String regex)
此字符串是否匹配给定的正则表达式
String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串
String replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串 所有匹配给定的正则表达式的子字符串
java.util.regex.Matcher
java.util.regex.Pattern
完整匹配
Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches();
在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。 此方法编译表达式并在单个调用中将输入序列与其匹配。如果完全匹配, 则返回true: boolean b = Pattern.matches("a*b", "aaaaab");
等效于上面的三个语句, 尽管对于重复的匹配而言它效率不高, 因为它不允许重用已编译的模式。
部分匹配
Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab");
Matcher类的方法: public boolean find() pulbic String group() //等效于group(0) public int start() public int end()
String str = "Hello,Wo6ld! Wo8ld! in Java."; Pattern pattern = Pattern.compile("W(o.)(ld!)"); Matcher matcher = pattern.matcher(str);
matcher.find()
尝试查找与该模式匹配的输入序列的下一个子序列。
matcher.group(0)
得到第0组——整个W(o.)(ld!)匹配
matcher.group(1)
得到第一组匹配——与(o.)匹配的
matcher.group(2)
得到第二组匹配——与(ld!)匹配的,组也就是子表达式
matcher.start(0);matcher.end(0);
总匹配的索引 ,Wo6ld!的起始和结束索引
matcher.start(1);matcher.end(1);
第一组匹配的索引 (o.)的起始和结束索引
常用通配符
字符类
[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](减去)
预定义字符类
. 任何1个字符
注意:\是转义字符,在字符串中需要用\\表示
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符: [ \t\n\f\r]
linux,unix: \n
windows : \r\n
Mac OS : \n
这些不是正则通配符,不需要\\
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
数量词
X? X一次或一次也没有
X* X零次或多次
X+ X一次或多次
X{n} X恰好 n 次
X{n,}? X至少 n 次
X{n,m}? X至少 n 次, 但是不超过 m 次
如果X是由多个字符组成, 用小括号()括起来
StringBuffer
可变的字符序列
StringBuffer append(String str); 将指定的字符串追加到此字符序列
StringBuffer insert(int offset, String str) 将字符串str插入此字符序列指定位置中
int length( ) 确定 StringBuffer 对象的长度
void setCharAt(int pos, char ch) 使用 ch 指定的新值设置 pos 指定的位置上的字符
String toString( ) 转换为字符串形式
StringBuffer reverse() 反转字符串
StringBuffer delete(int start, int end) 此方法将删除调用对象中从 start 位置开始直到 end 指定的索引 – 1 位置的字符序列
StringBuffer deleteCharAt(int pos) 此方法将删除 pos 指定的索引处的字符
StringBuffer replace(int start, int end, String s) 此方法使用一组字符替换另一组字符。将用替换字符串从 start 指定的位置开始替换,直到 end 指定的位置结束
线程安全的,效率较低
StringBuilder
线程不安全(非同步的),用法同StringBuilder
效率高
Math
double sin (double a) 计算角 a的正弦值
double cos (double a) 计算角 a的余弦值
double pow (double a, double b) 计算 a 的 b 次方
double sqrt (double a) 计算给定值的平方根
int abs (int a) 计算 int 类型值 a的绝对值,也接收 long、float 和 double 类型的参数
double ceil (double a) 返回大于等于 a的最小整数的double值
double floor (double a) 返回小于等于 a的最大整数的double值
int max(int a, int b) 返回 int 型值 a 和 b 中的较大值,也接收 long、float 和 double 类型的参数
int min(int a, int b) 返回 a 和 b 中的较小值,也可接收 long、float 和 double 类型的参数
int round(float a); 四舍五入返回整数,可以是double,返回long
long round(double a)
double random() 返回带正号的double值,该值大于等于0.0且小于1.0
静态导入import static p1.p2.ClassName.*;
Random
Runtime
java.util.Date
long getTime()
java.text.SimpleDateFormat
通过构造方法来指定格式
String format(Date)格式化Date->String
Date parse(String)解析String->Date
格式字符串
字母 日期或时间元素 表示 示例
G Era 标志符 Text AD 公元
y 年 Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800
java.util.Calendar
抽象类
获取Calendar类的实例的方法
使用 Calendar.getInstance();
返回它的子类GregorianCalendar的对象
方法
public int get(int field) 根据给定的日历字段获得当前时间中相应字段的值。
public void set(int field, int value) 将指定的日历字段设置为给定的值,field参考常量字段值
public void set(year, month, date, hourOfDay, minute, second)
public void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。
public final Date getTime() 返回一个表示此 Calendar 时间值的 Date 对象
public final void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间
public long getTimeInMillis() 返回此 Calendar 的时间毫秒值