第八章 Java常用工具类
如何通过命令行给Java应用传递参数?
Math类常用方法?
Calendar类如何获得日期?
Collection和Collections的区别?
List和Map集合如何使用?
如何使用泛型?
一.命令行参数
在启动Java应用程序时可以一次性地向应用程序中传递0~多个参数----命令行参数
命令行参数使用格式:
java ClassName lisa "bily" "Mr Brown"
命令行参数被系统以String数组的方式传递给应用程序中的main方法,由参数args接收
public static void main(String[] args)
1.改盘符:D: E: F:
2.改给文件夹路径 cd demo;
3.编译javac文件: javac Texr.java
4.执行:java text ;
执行main方法时传入 String[] args;
System.exit[i];
二.Math类
1.Math类中定义了多个市县标准数学函数功能的方法;
2.提供数据截断(truncation)操作功能
double ceil(double a);
功能:向上取整,返回一个不小于a的最小整数
double floor(double a):
功能:向下取整,返回一个不大于a的最大整数
int round(float a);
long round(double a);
功能:四舍五入,返回a的最相近的整数
3.取最大、最小及绝对值: max, min, abs
4.三角函数: sin, cos, tan, asin, acos, atan,:关于角度计算的方法;
5.对数及幂运算
double log(double a);
功能:返回参数a的自然对数,其中a的值必须大于0.0;
double exp(double a)
功能:返回e的a次幂;
double pow(double a;double b;
功能:返回a的b次幂;
6.产生随机数
double random();
功能:生成并返回一个小于1.0大于0.0之间的随机数;
7.数学常量;
public static final double PI;
功能:表示圆周率,数值约为:3.141592653
public static final double E;
功能:自然对数的底,约为:2.718281828
二,日期处理
1.Date类
如果编写程序时要进行时间处理就需要用到Date类;
类 Date 表示特定的瞬间,精确到毫秒。决于 Java 虚拟机的主机环境
2.方法:
(1)Date();生成一个代表当前时间的日期对象;
(2)Date(long date):根据指定参数生成一个日期对象;表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
(3)boolean before(Date when);测试该时间是否比参数指定的日期迟;
(4)bollean after(Date when):测试该时间是否比参数指定的日期早;
(5)long getTime();返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
(6)void setTime(long date);设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
3.Calendar类
Calendar类是一个抽象类;用来表示日历的概念;
方法getInstance()可以获得Calendar类型的对象;获得一个Calender的子类GregorianCalendar的实例;
GregorianCalendar表示阳历;
方法:
Calendar getInstance();获得一个默认时区;
Calendar getInstance(Locale locale);获得一个默认时区,指定地点;
Calendar getInstance(Locale locale);获得一个指定时区,默认地点的Calendar对象;
int add(int field,int value); 根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。
roll(int field, int amount) ; 向指定日历字段添加有符号的时间量,不更改更大的字段。
get(int field) : 返回给定日历字段的值。
getFirstDayOfWeek() : 获取一星期的第一天;例如,在美国,这一天是 SUNDAY,而在法国,这一天是 MONDAY。
getTimeInMillis() :返回此 Calendar 的时间值,以毫秒为单位。
set(int year, int month, int date) :设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
set(int year, int month, int date, int hourOfDay, int minute) :设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。
set(int year, int month, int date, int hourOfDay, int minute, int second) :设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。
setTime(Date date) :使用给定的 Date 设置此 Calendar 的时间
4.TimeZone类
TimeZone是一个抽象类,它表示的是一个时区的概念。
使用这个抽象类上面的静态方法getDefault()来获得程序所运行机器上的默认时区
方法:getDefault();来获取程序所运行机器上的默认时区;
getID();获取对应TimeZone的Id;
北京时间Id:其实是Asia/Shanghai.
getDetDisplayName();获得对应时区的显示名称
5.DateFormat格式化日期
DateFormat是一个抽象类;
方法: getDateInstance;返回一个日期格式器;
getTimeInstance;返回一个时间格式器;
getDateTimeInstance;返回一个既有时间又有日期的格式器;
format(Date date)
System.out.println(date4.format(new Date()));
将一个 Date 格式化为日期/时间字符串。
四.容器类
1.一个容器(Container)是用一个对象来“存放”一组对象。其中的每一个对象作为容器的一个元素;
2.java容器类库中,分为两大类:Collection(集合)和Map(映像)。
Collection:存放的是一组各自独立的对象;
Map:存放的是一群成堆的“键-值”对象;
Collection抽象的集合
a.List:集合:有序可重复的列表;
b.Set:集合;无序不重复的列表;
Map接口;
Map:存放的是一群成堆的“键-值”对映像;
3.Conllection接口
方法:
Boolean add(Object obj);添加对象;将一个对象放到集合中;
Boolean addAll(Collection col);将一个Collection对象放到集合中;
Iterator iterator();它返回一个Iterator(遍历器)接口对象;
4.List
List是Collection的接口,它用于保存有序的可重复的对象;
有序集合通过下标索引访问每一个对象;0开始;
List 组件为用户提供了一个可滚动的文本项列表。可设置此 list,使其允许用户进行单项或多项选择
方法:
add(E e) :将指定的元素添加到此列表的尾部。
add(int index, E element) :将指定的元素插入此列表中的指定位置。
addAll(int index, Collection c) :从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。
set(int index, E element):用指定的元素替代此列表中指定位置上的元素
常用的集合:
ArrayList LinkedList Vector
ArrayList:
add(E e) :将指定的元素添加到此列表的尾部。
get(int index) :返回此列表中指定位置上的元素。
size() :返回此列表中的元素数。
remove(int index) : 移除此列表中指定位置上的元素。
remove(Object o) :移除此列表中首次出现的指定元素(如果存在)。
LinkedList
addFirst(E e) :将指定元素插入此列表的开头。
addLast(E e) :将指定元素添加到此列表的结尾。
getFirst() :返回此列表的第一个元素。
getLast() :返回此列表的最后一个元素。
removeFirst() :移除并返回此列表的第一个元素。
removeLast() :移除并返回此列表的最后一个元素。
Vector
addElement(E obj) :将指定的组件添加到此向量的末尾,将其大小增加 1。
firstElement() :返回此向量的第一个组件(位于索引 0) 处的项)。
lastElement() :返回此向量的最后一个组件。
5.Set
Set:集合;无序不重复的列表;
Set子类:
HashSet LinkedHashSet TreeSet
方法:
add(E e) :如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。
clear() :移除此 set 中的所有元素(可选操作)。
remove(Object o) :如果 set 中存在指定的元素,则将其移除(可选操作)。
size() :返回 set 中的元素数(其容量)。
1.HashSet
方法:
add(E e) : 如果此 set 中尚未包含指定元素,则添加指定元素。
clear() :从此 set 中移除所有元素。
remove(Object o) :如果指定元素存在于此 set 中,则将其移除。
size() "返回此 set 中的元素的数量(set 的容量)。
遍历数据:
遍历器:
Iterator li = list.iterator();
while(li.hasNext()){
System.out.println(li.next());
}
2.TreeSet
方法:
add(E e) :将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。
clear() :移除此 set 中的所有元素。
remove(Object o) :将指定的元素从 set 中移除(如果该元素存在于此 set 中)。
size() :返回 set 中的元素数(set 的容量)。
6.Map集合
a.Map:映射表,用于存储以键值对型式的值;
键不能重复。值可以重复;
方法:
put(key,value) :将指定的值与此映射中的指定键关联(可选操作)。
get(key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
keySet() :返回此映射中包含的键的 Set 视图。=======================================
entrySet() :返回此映射所包含的映射关系的 Set 视图。=================================
containsValue(Object value) :如果此映射将一个或多个键映射到指定值,则返回 true。
containsKey(Object key) :如果此映射包含指定键的映射关系,则返回 true。
2.HashMap集合;
HashMap是Map的实现类;
实现提供所有可选的映射操作,并允许使用 null 值和 null 键。
3.Iterator
如何遍历List集合呢?
方法1:通过for循环和get()方法配合实现遍历
方法2:通过迭代器Iterator实现遍历
所有集合接口和类都没有提供相应遍历方法,而是由Iterator实现集合遍历
boolean hasNext(): 判断是否存在另一个可访问的元素
遍历:从集合众取出每一个元素的过程;
方法:
hasNest();判断是Iterator中是否存在元素;
next();获取对象;
remove();删除;
4.HashTable
跟Hash类似;
实现提供所有可选的映射操作,不允许使用 null 值和 null 键。
5.Collections
Conllections包含了许多对集合进行运算的专用静态方法;排序,混排,比较,查询等等;
方法:
a.排序(sort(集合))
根据元素的自然顺序对指定列表按升序进行排序;
b.混排(shuffle(集合));
使用默认随机源随机更改制定列表顺序;
c.反转(recerse(集合))
根据元素的自然顺序对指定泪飙俺降序进行排序;
d.复制(copy())
copy(List dest, List src)
dest - 目标列表。
src - 源列表。
将所有元素src列表复制到dest列表。覆盖内容;
目标列表要不源列表长,或一样长;
7.泛型
1.为什么要只用泛型
主要作用:
a.类型安全;
b.消除强制类型转换;
2.使用泛型;
HashMap<Integer ,String> list1= new HashMap<Integer ,String>();
list1.put(1, "tttt");
String name1=list1.get(1);
System.out.println(name1);
3.自定义泛型
1.声明一个类时。用<T>来声明一个参数类型;
2.用T来做为数据类型定义属性;
定义一个受限制的泛型参数
<T extends 类型>
六.用foreach遍历集合或数组
for(type variable:数组/集合){
//type为数组或集合中的数据类型;
//variable 名称;变量名称
}
七.枚举
用法:public enum 类名{值,,,}
运用于:某些数据必须是一些特定的值;
用enum修饰;
Enum中Values()方法;
可以用来方便的遍历所有的枚举类;
八.正则表达式
正则表达式;用来描述文本模式的特殊语法;
1.正则表达式主要用的场所:
a.搜索和替换:我们经常用的搜索和替换功能就是正则表达式最基本的功能;
b.验证:检查某个字符串是否符合特定的匹配模式;
c.解析:解析就是从一个文本中获取有用的信息的过程;
2.模式
a.文字
liushuaitao.@anjoyo.com
表达式内任何不具有特殊意义的字符都被看做一个文字,并与自身匹配;
(1)[abc] a、b 或 c(简单类)
(2)[^abc] 任何字符,除了 a、b 或 c(否定)
(3)[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
(4)[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
(5)[a-z&&[def]] d、e 或 f(交集)
(6)[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
(7)[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
b.量词
Greedy 数量词
(1)?:一次或一次也没有
(2)*:零次或多次
(3)+:一次或多次
(4){n}:恰好 n 次
(5){n,}:至少 n 次
(6){n,m}:至少 n 次,但是不超过 m 次
c.字符类
(1)\d 数字:[0-9]
(2)\D 非数字: [^0-9]
(3)\s 空白字符:[ \t\n\x0B\f\r]
(4)\S 非空白字符:[^\s]
(5)\w 单词字符:[a-zA-Z0-9]
(6)\W 非单词字符:[^\w]
d.Posix字符类
(1)\p{Lower} 小写字母字符:[a-z]
(2)\p{Upper} 大写字母字符:[A-Z]
(3)\p{ASCII} 所有 ASCII:[\x00-\x7F]
(4)\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]
(5)\p{Digit} 十进制数字:[0-9]
(6)\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]
e.范围
使用短线"-"来指定包括一定范围字符的字符类。
如:[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
f.否定
脱字符"^"否定字符类的内容
如:[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
g.边界通配符
(1)^ 行的开头
(2)$ 行的结尾
(3)\b 单词边界
(4)\B 非单词边界
(5)\A 输入的开头
(6)\G 上一个匹配的结尾
(7)\Z 输入的结尾,仅用于最后的结束符(如果有的话)
(8)\z 输入的结尾
h.逻辑操作
liushuaitao@anjoyo/163.com
(1)XY X 后跟 Y
(2)X|Y X 或 Y
i.组操作
(1)(X) X,作为捕获组
2.在Java中使用正则表达式
java自JDK1.4之后那个了正则表达式的支持;
主要有两个类:
(1)Pattern
compile();获得一个Pattern实例;
compile(String regex) :将给定的正则表达式编译到模式中
compile(String regex, int flags) :将给定的正则表达式编译到具有给定标志的模式中。
返回Matcher类型: matcher(CharSequence input) :创建匹配给定输入与此模式的匹配器。
标记有:
CASE_INSENSITIVE :启用不区分大小写的匹配。
UNICODE_CASE :启用 Unicode 感知的大小写折叠。
UNICODE_CASE :启用 Unicode 感知的大小写折叠。
可以使用+号把标志位链接起来使用
(2)Matcher
Boolean matches() :尝试将整个区域与模式匹配。
boolean lookingAt() :尝试将从区域开头开始的输入序列与该模式匹配。
Boolean find() :尝试查找与该模式匹配的输入序列的下一个子序列。
boolean find(int start) :重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。
int start() :返回当前匹配的可开始索引。
int end() :返回当前匹配的结束索引。
String replaceAll(String replacement) :替换模式与给定替换字符串相匹配的输入序列的每个子序列。
String group(int group) :返回在以前匹配操作期间由给定组捕获的输入子序列。
使用步骤:
(1)使用Pattern类“编译”一个模式
Pattern ptn = Pattern.compile(正则表达式);
Matcher mcr = ptn.matcher(要匹配的区域);将整个区域与模式匹配。
(2)使用这个模式配合Matcher来对指定字符串进行验证,解析,搜索等操作;
调用Mather中的方法;
如:mcr.matches()
String patternString = "<a\\s+href\\s*=\\s*" // <a href=
+ "(\"[^\"]*\"|[^\\s]*)\\s*"
// url,如"java.sun.com"或者java.sun.com
+ "(target=\\s*(\"[^\"]*\"|[^\\s]*))?>";// target部分
如何通过命令行给Java应用传递参数?
Math类常用方法?
Calendar类如何获得日期?
Collection和Collections的区别?
List和Map集合如何使用?
如何使用泛型?
一.命令行参数
在启动Java应用程序时可以一次性地向应用程序中传递0~多个参数----命令行参数
命令行参数使用格式:
java ClassName lisa "bily" "Mr Brown"
命令行参数被系统以String数组的方式传递给应用程序中的main方法,由参数args接收
public static void main(String[] args)
1.改盘符:D: E: F:
2.改给文件夹路径 cd demo;
3.编译javac文件: javac Texr.java
4.执行:java text ;
执行main方法时传入 String[] args;
System.exit[i];
二.Math类
1.Math类中定义了多个市县标准数学函数功能的方法;
2.提供数据截断(truncation)操作功能
double ceil(double a);
功能:向上取整,返回一个不小于a的最小整数
double floor(double a):
功能:向下取整,返回一个不大于a的最大整数
int round(float a);
long round(double a);
功能:四舍五入,返回a的最相近的整数
3.取最大、最小及绝对值: max, min, abs
4.三角函数: sin, cos, tan, asin, acos, atan,:关于角度计算的方法;
5.对数及幂运算
double log(double a);
功能:返回参数a的自然对数,其中a的值必须大于0.0;
double exp(double a)
功能:返回e的a次幂;
double pow(double a;double b;
功能:返回a的b次幂;
6.产生随机数
double random();
功能:生成并返回一个小于1.0大于0.0之间的随机数;
7.数学常量;
public static final double PI;
功能:表示圆周率,数值约为:3.141592653
public static final double E;
功能:自然对数的底,约为:2.718281828
二,日期处理
1.Date类
如果编写程序时要进行时间处理就需要用到Date类;
类 Date 表示特定的瞬间,精确到毫秒。决于 Java 虚拟机的主机环境
2.方法:
(1)Date();生成一个代表当前时间的日期对象;
(2)Date(long date):根据指定参数生成一个日期对象;表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
(3)boolean before(Date when);测试该时间是否比参数指定的日期迟;
(4)bollean after(Date when):测试该时间是否比参数指定的日期早;
(5)long getTime();返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
(6)void setTime(long date);设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
3.Calendar类
Calendar类是一个抽象类;用来表示日历的概念;
方法getInstance()可以获得Calendar类型的对象;获得一个Calender的子类GregorianCalendar的实例;
GregorianCalendar表示阳历;
方法:
Calendar getInstance();获得一个默认时区;
Calendar getInstance(Locale locale);获得一个默认时区,指定地点;
Calendar getInstance(Locale locale);获得一个指定时区,默认地点的Calendar对象;
int add(int field,int value); 根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。
roll(int field, int amount) ; 向指定日历字段添加有符号的时间量,不更改更大的字段。
get(int field) : 返回给定日历字段的值。
getFirstDayOfWeek() : 获取一星期的第一天;例如,在美国,这一天是 SUNDAY,而在法国,这一天是 MONDAY。
getTimeInMillis() :返回此 Calendar 的时间值,以毫秒为单位。
set(int year, int month, int date) :设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
set(int year, int month, int date, int hourOfDay, int minute) :设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。
set(int year, int month, int date, int hourOfDay, int minute, int second) :设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。
setTime(Date date) :使用给定的 Date 设置此 Calendar 的时间
4.TimeZone类
TimeZone是一个抽象类,它表示的是一个时区的概念。
使用这个抽象类上面的静态方法getDefault()来获得程序所运行机器上的默认时区
方法:getDefault();来获取程序所运行机器上的默认时区;
getID();获取对应TimeZone的Id;
北京时间Id:其实是Asia/Shanghai.
getDetDisplayName();获得对应时区的显示名称
5.DateFormat格式化日期
DateFormat是一个抽象类;
方法: getDateInstance;返回一个日期格式器;
getTimeInstance;返回一个时间格式器;
getDateTimeInstance;返回一个既有时间又有日期的格式器;
format(Date date)
System.out.println(date4.format(new Date()));
将一个 Date 格式化为日期/时间字符串。
四.容器类
1.一个容器(Container)是用一个对象来“存放”一组对象。其中的每一个对象作为容器的一个元素;
2.java容器类库中,分为两大类:Collection(集合)和Map(映像)。
Collection:存放的是一组各自独立的对象;
Map:存放的是一群成堆的“键-值”对象;
Collection抽象的集合
a.List:集合:有序可重复的列表;
b.Set:集合;无序不重复的列表;
Map接口;
Map:存放的是一群成堆的“键-值”对映像;
3.Conllection接口
方法:
Boolean add(Object obj);添加对象;将一个对象放到集合中;
Boolean addAll(Collection col);将一个Collection对象放到集合中;
Iterator iterator();它返回一个Iterator(遍历器)接口对象;
4.List
List是Collection的接口,它用于保存有序的可重复的对象;
有序集合通过下标索引访问每一个对象;0开始;
List 组件为用户提供了一个可滚动的文本项列表。可设置此 list,使其允许用户进行单项或多项选择
方法:
add(E e) :将指定的元素添加到此列表的尾部。
add(int index, E element) :将指定的元素插入此列表中的指定位置。
addAll(int index, Collection c) :从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。
set(int index, E element):用指定的元素替代此列表中指定位置上的元素
常用的集合:
ArrayList LinkedList Vector
ArrayList:
add(E e) :将指定的元素添加到此列表的尾部。
get(int index) :返回此列表中指定位置上的元素。
size() :返回此列表中的元素数。
remove(int index) : 移除此列表中指定位置上的元素。
remove(Object o) :移除此列表中首次出现的指定元素(如果存在)。
LinkedList
addFirst(E e) :将指定元素插入此列表的开头。
addLast(E e) :将指定元素添加到此列表的结尾。
getFirst() :返回此列表的第一个元素。
getLast() :返回此列表的最后一个元素。
removeFirst() :移除并返回此列表的第一个元素。
removeLast() :移除并返回此列表的最后一个元素。
Vector
addElement(E obj) :将指定的组件添加到此向量的末尾,将其大小增加 1。
firstElement() :返回此向量的第一个组件(位于索引 0) 处的项)。
lastElement() :返回此向量的最后一个组件。
5.Set
Set:集合;无序不重复的列表;
Set子类:
HashSet LinkedHashSet TreeSet
方法:
add(E e) :如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。
clear() :移除此 set 中的所有元素(可选操作)。
remove(Object o) :如果 set 中存在指定的元素,则将其移除(可选操作)。
size() :返回 set 中的元素数(其容量)。
1.HashSet
方法:
add(E e) : 如果此 set 中尚未包含指定元素,则添加指定元素。
clear() :从此 set 中移除所有元素。
remove(Object o) :如果指定元素存在于此 set 中,则将其移除。
size() "返回此 set 中的元素的数量(set 的容量)。
遍历数据:
遍历器:
Iterator li = list.iterator();
while(li.hasNext()){
System.out.println(li.next());
}
2.TreeSet
方法:
add(E e) :将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。
clear() :移除此 set 中的所有元素。
remove(Object o) :将指定的元素从 set 中移除(如果该元素存在于此 set 中)。
size() :返回 set 中的元素数(set 的容量)。
6.Map集合
a.Map:映射表,用于存储以键值对型式的值;
键不能重复。值可以重复;
方法:
put(key,value) :将指定的值与此映射中的指定键关联(可选操作)。
get(key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
keySet() :返回此映射中包含的键的 Set 视图。=======================================
entrySet() :返回此映射所包含的映射关系的 Set 视图。=================================
containsValue(Object value) :如果此映射将一个或多个键映射到指定值,则返回 true。
containsKey(Object key) :如果此映射包含指定键的映射关系,则返回 true。
2.HashMap集合;
HashMap是Map的实现类;
实现提供所有可选的映射操作,并允许使用 null 值和 null 键。
3.Iterator
如何遍历List集合呢?
方法1:通过for循环和get()方法配合实现遍历
方法2:通过迭代器Iterator实现遍历
所有集合接口和类都没有提供相应遍历方法,而是由Iterator实现集合遍历
boolean hasNext(): 判断是否存在另一个可访问的元素
遍历:从集合众取出每一个元素的过程;
方法:
hasNest();判断是Iterator中是否存在元素;
next();获取对象;
remove();删除;
4.HashTable
跟Hash类似;
实现提供所有可选的映射操作,不允许使用 null 值和 null 键。
5.Collections
Conllections包含了许多对集合进行运算的专用静态方法;排序,混排,比较,查询等等;
方法:
a.排序(sort(集合))
根据元素的自然顺序对指定列表按升序进行排序;
b.混排(shuffle(集合));
使用默认随机源随机更改制定列表顺序;
c.反转(recerse(集合))
根据元素的自然顺序对指定泪飙俺降序进行排序;
d.复制(copy())
copy(List dest, List src)
dest - 目标列表。
src - 源列表。
将所有元素src列表复制到dest列表。覆盖内容;
目标列表要不源列表长,或一样长;
7.泛型
1.为什么要只用泛型
主要作用:
a.类型安全;
b.消除强制类型转换;
2.使用泛型;
HashMap<Integer ,String> list1= new HashMap<Integer ,String>();
list1.put(1, "tttt");
String name1=list1.get(1);
System.out.println(name1);
3.自定义泛型
1.声明一个类时。用<T>来声明一个参数类型;
2.用T来做为数据类型定义属性;
定义一个受限制的泛型参数
<T extends 类型>
六.用foreach遍历集合或数组
for(type variable:数组/集合){
//type为数组或集合中的数据类型;
//variable 名称;变量名称
}
七.枚举
用法:public enum 类名{值,,,}
运用于:某些数据必须是一些特定的值;
用enum修饰;
Enum中Values()方法;
可以用来方便的遍历所有的枚举类;
八.正则表达式
正则表达式;用来描述文本模式的特殊语法;
1.正则表达式主要用的场所:
a.搜索和替换:我们经常用的搜索和替换功能就是正则表达式最基本的功能;
b.验证:检查某个字符串是否符合特定的匹配模式;
c.解析:解析就是从一个文本中获取有用的信息的过程;
2.模式
a.文字
liushuaitao.@anjoyo.com
表达式内任何不具有特殊意义的字符都被看做一个文字,并与自身匹配;
(1)[abc] a、b 或 c(简单类)
(2)[^abc] 任何字符,除了 a、b 或 c(否定)
(3)[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
(4)[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
(5)[a-z&&[def]] d、e 或 f(交集)
(6)[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
(7)[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
b.量词
Greedy 数量词
(1)?:一次或一次也没有
(2)*:零次或多次
(3)+:一次或多次
(4){n}:恰好 n 次
(5){n,}:至少 n 次
(6){n,m}:至少 n 次,但是不超过 m 次
c.字符类
(1)\d 数字:[0-9]
(2)\D 非数字: [^0-9]
(3)\s 空白字符:[ \t\n\x0B\f\r]
(4)\S 非空白字符:[^\s]
(5)\w 单词字符:[a-zA-Z0-9]
(6)\W 非单词字符:[^\w]
d.Posix字符类
(1)\p{Lower} 小写字母字符:[a-z]
(2)\p{Upper} 大写字母字符:[A-Z]
(3)\p{ASCII} 所有 ASCII:[\x00-\x7F]
(4)\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]
(5)\p{Digit} 十进制数字:[0-9]
(6)\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]
e.范围
使用短线"-"来指定包括一定范围字符的字符类。
如:[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
f.否定
脱字符"^"否定字符类的内容
如:[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
g.边界通配符
(1)^ 行的开头
(2)$ 行的结尾
(3)\b 单词边界
(4)\B 非单词边界
(5)\A 输入的开头
(6)\G 上一个匹配的结尾
(7)\Z 输入的结尾,仅用于最后的结束符(如果有的话)
(8)\z 输入的结尾
h.逻辑操作
liushuaitao@anjoyo/163.com
(1)XY X 后跟 Y
(2)X|Y X 或 Y
i.组操作
(1)(X) X,作为捕获组
2.在Java中使用正则表达式
java自JDK1.4之后那个了正则表达式的支持;
主要有两个类:
(1)Pattern
compile();获得一个Pattern实例;
compile(String regex) :将给定的正则表达式编译到模式中
compile(String regex, int flags) :将给定的正则表达式编译到具有给定标志的模式中。
返回Matcher类型: matcher(CharSequence input) :创建匹配给定输入与此模式的匹配器。
标记有:
CASE_INSENSITIVE :启用不区分大小写的匹配。
UNICODE_CASE :启用 Unicode 感知的大小写折叠。
UNICODE_CASE :启用 Unicode 感知的大小写折叠。
可以使用+号把标志位链接起来使用
(2)Matcher
Boolean matches() :尝试将整个区域与模式匹配。
boolean lookingAt() :尝试将从区域开头开始的输入序列与该模式匹配。
Boolean find() :尝试查找与该模式匹配的输入序列的下一个子序列。
boolean find(int start) :重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。
int start() :返回当前匹配的可开始索引。
int end() :返回当前匹配的结束索引。
String replaceAll(String replacement) :替换模式与给定替换字符串相匹配的输入序列的每个子序列。
String group(int group) :返回在以前匹配操作期间由给定组捕获的输入子序列。
使用步骤:
(1)使用Pattern类“编译”一个模式
Pattern ptn = Pattern.compile(正则表达式);
Matcher mcr = ptn.matcher(要匹配的区域);将整个区域与模式匹配。
(2)使用这个模式配合Matcher来对指定字符串进行验证,解析,搜索等操作;
调用Mather中的方法;
如:mcr.matches()
String patternString = "<a\\s+href\\s*=\\s*" // <a href=
+ "(\"[^\"]*\"|[^\\s]*)\\s*"
// url,如"java.sun.com"或者java.sun.com
+ "(target=\\s*(\"[^\"]*\"|[^\\s]*))?>";// target部分