正则表达式
//注册正则表达式
Pattern pattern = Pattern.compile("");
String mailStr = "[email protected]";
//匹配字符串,返回描述匹配结果的Matcher实例
Matcher matcher = pattern.matcher(mailStr)
if(matcher.find()){正确}
replaceAll(String regex,String replacement)方法可以替换字符串中满足正则表达式部分的内容
String info = StringUtils.repeat("hello",5);
String leftPad = StringUtils.leftPad("原字符串",希望返回长度,"a"填充字符);
StringBuilder封装可变的字符串,用于对某个字符串频繁的编辑操作
使用它可以大规模修改字符串时不开辟新的字符串对象,从而节约内存资源
StringBuilder append("")//拼接
insert,delete,replace,reverse
StringBuilder与StringBuffer
效果是一样的
区别:StringBuilder是线程安全
StringBuffer不是线程安全的
在多线程操作下应使用StringBuilder
Date date = new Date();
通关Calendar的静态方法获取一个实例
该方法会自行决定时区,帮我们创建实例
该方法会根据当前系统所在地区来决定时区
Calendar calendar = Calendar.getInstance();//抽象类,不能实例化
//实际上有若干子类
//calendar是可以将其描述的时间转化为Date的
Date now = calendar.getTime();//获取日历所描述的日期
通过日历类计算时间:
calendar.set(int field,int value)//设置时间
lg:(Calendar.YEAR,2012)
calendar.get(Calendat.YEAR);
用来描述日期的格式
yyyy-MM-dd hh:mm:ss
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//创建一个日期格式的字符串
String dateFormat = ”2013-05-14";
//将一个字符串转换为响应的Date对象
Date date = sdf.parse(dateFormat);
--将日期转换为字符串
Date now = new Date();
String nowStr = sdf.format(now);
这种从基本类型转变为引用类型的过程称之为"装箱",反之叫"拆箱"
用字符串描述一个浮点数作为参数传入
BigDecimal num1 = new BigDecimal("3.0");
num1.subtract(num2); //num1-num2
divide(num2,9,BigDecimal.ROUND_HALF_UP)//保留精度,四舍五入
//add:加法
//multiply:乘法
float f = result.floatValue();//将结果转换为基本类型float
BigInteger num = new BigInteger("1");
Collection是集合的顶级父类:是一个接口
其下有两个子类:List和Set
List:元素可重复 List都是有序的
Set:元素不可重复 Set大部分是无序的
List两个常见的子类实现:
ArrayList:动态数组实现的List,可以通过下标迅速索引,但删除和插入时移动较多元素
LinkedList:链表实现的List,在删除或插入时只需要改变链接指针即可以实现
set方法,用于修改集合中的元素
indexOf("");
lastIndexOf("");
如何将一个集合转换为数组?
Object[] array = list.toArray();
System.out.println(Arraus.toString(array));
Iterator it = list.iterator();
while(it.hasNext()){
Object element = it.next();
it.remove();//不能重复调用两次
}
泛型的本质是参数化类型,在类,接口和方法的定义过程中,所操作的数据类型被传入的参数指定
ArrayList
public class Point{
private E x;
private Z y;
}
List.subList(3,8)取一个集合子集
队列
Queue queue = new LinkedList();
queue.offer("A");
queue.offer("B");
queue.offer("C");
poll():从队列中获取元素使用poll()方法,若该方法返回null,说明队列中没有元素了
peek():获取队首的元素。(不删除该元素)
栈
Deque:
push():压入
pop():弹出
peek():
若我们定义的类想在数组或集合中可以排序,我们需要就将当前类实现Comparable接口,并定义比较规则
public class ComparablePoint implements Comparable{
所有子类均需要实现该方法来定义比较规则
private int x;
private int y;
比较规则:
比较点到原点的距离,谁的距离长谁大
public int compareTo(ComparablePoint o){
int r = x*x+y*y;
int other = o.x*o.x+o.y*o.y;
return r-other;
}
}
Collections类:
集合的工具类。提供了对集合操作的若干方法
sort():该方法可以对集合中的元素自然排序
使用集合工具类对集合进行自然排序
该方法会一次调用集合中每个元素的compareTo方法
进行比较
Collections.sort(list);
Comparator比较器
他是一个接口,实现该接口的类需要实现一个抽象方法
int compareTo(E o1,E o2)
该方法返回值大于0:o1比o2大
小于0:o1比o2小
等于0:o1与o2相等
自定义比较规则需要以下步骤:
1定义一个类并实现Comparator接口
2实现接口中的抽象方法compareTo(E o1,E o2)
3实例化这个比较器
4调用Collections的重载方法进行排序
通常使用匿名类的方式创建一个实例来定义比较器
Comparator c = new Comparator(){
public int compare(ComparablePoint o1,ComparablePoint o2){
//两个点X值大的值
return o1.getX()-o2.getX();
}
}
Collections.sort(list,c);
不重复,无序
Set set = new HashSet();
想获取元素得用iterator