正则表达式
* 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。
* 作用:比如注册邮箱,邮箱有用户名和密码,一般会对其限制长度,这个限制长度的事情就是正则表达式做的
可以用这个判断字符串是否满足正则表达式:"2553868".matches(regex)
"[]"代表单个字符
字符类
* [abc] a、b 或 c(简单类)
* [^abc] 任何字符,除了 a、b 或 c(否定)
* [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
* [0-9] 0到9的字符都包括
预定义字符类
. 任何字符。
\d 数字:[0-9] 需要写成\\d 第一个\是转义字符
\s :空白字符: 空格,tab键等
\w 单词字符:[a-zA-Z_0-9] 即a-z + A-Z + _ + 0-9
Greedy 数量词
* X? X,一次或一次也没有
* X* X,零次或多次
* X+ X,一次或多次
* X{n} X,恰好 n 次
* X{n,} X,至少 n 次
* X{n,m} X,至少 n 次,但是不超过 m 次
正则表达式的分割功能
* String类的功能:public String[] split(String regex)
String s = "金三胖.郭美美.李dayone";
String[] arr = s.split("\\."); //通过正则表达式切割字符串
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
快捷键:ctr+n创建类 +d删除一行
正则表达式的替换功能
* String类的功能:public String replaceAll(String regex,String replacement)
String s1 = "sadasd8as76da54sd2as";
String regex = "\\d";
String s2 = s.replaceAll(regex,"");
正则表达式的分组功能
* 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C)))
2 (A
3 (B(C))
4 (C)
组零始终代表整个表达式。
String regex = "(.)\\1(.)\\2"; //\\1代表第一组又出现一次 \\2代表第二组又出现一次
String s3 = s2.replaceAll("(.)\\1+", "$1"); //$1代表第一组中的内容 即用第一组中的数据替换第一组
Ctrl+shift+o:导包
Pattern和Matcher的概述
模式和匹配器的典型调用顺序
* 通过JDK提供的API,查看Pattern类的说明
* 典型的调用顺序是
* Pattern p = Pattern.compile("a*b"); //获取正则表达式,即0个或多个a+b
* Matcher m = p.matcher("aaaaab"); //获取匹配器
* boolean b = m.matches(); //看是否能匹配
正则表达式的获取功能
* Pattern和Matcher的结合使用
把一个字符串中的手机号码获取出来
String s = "我的手机是18511866260,我曾用过18987654321,还用过18812345678";
String regex = "1[3578]\\d{9}";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
while(m.find())
System.out.println(m.group());
Math类概述
* Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
成员方法
Math.方法名调用,因为全是静态方法,所以构造方法是私有的
* public static int abs(int a) //取绝对值
* public static double ceil(double a) //向上取整,结果为double值,末尾加.0
* public static double floor(double a) //向下取整
* public static int max(int a,int b) min //取大值,小值
* public static double pow(double a,double b) //求a的b次方,得到double值,加.0
* public static double random() //生成0.0-1.0之间的随机小数,包括0.0,不包括1.0
* public static int round(float a) 参数为double的自学 //四舍五入
* public static double sqrt(double a) //开根号
Random类的概述
* 此类用于产生随机数如果用相同的种子创建两个 Random 实例,
* 则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
构造方法
* public Random() 通过种子^纳秒值得到结果
* public Random(long seed)
成员方法
* public int nextInt()
* public int nextInt(int n) 得到0--n-1之间的一个数
System类的概述
* System 类包含一些有用的类字段和方法。它不能被实例化。
成员方法
* public static void gc() //运行垃圾回收器,相当于呼喊保洁阿姨
* public static void exit(int status) //非0状态是异常终止,退出jvm
* public static long currentTimeMillis() //获取当前时间的毫秒值
* pubiic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) ////将数组内容拷贝,即从源数组srcPos开始复制length长度数据到目标数组的destPos结束
BigInteger的概述
* 可以让超过Integer范围内的数据进行运算
构造方法
* public BigInteger(String val)
成员方法
* public BigInteger add(BigInteger val)
* public BigInteger subtract(BigInteger val)
* public BigInteger multiply(BigInteger val)
* public BigInteger divide(BigInteger val)
* public BigInteger[] divideAndRemainder(BigInteger val) //得到商和余数的数组
BigDecimal的概述
* 由于在运算的时候,float类型和double很容易丢失精度,演示案例。
* 所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
* 不可变的、任意精度的有符号十进制数。
构造方法
* public BigDecimal(String val)
成员方法
* public BigDecimal add(BigDecimal augend)
* public BigDecimal subtract(BigDecimal subtrahend)
* public BigDecimal multiply(BigDecimal multiplicand)
* public BigDecimal divide(BigDecimal divisor)
Date类的概述
Date类的概述是util包下的,不能导入sql包的
* 类 Date 表示特定的瞬间,精确到毫秒。
构造方法
* public Date() //如果没有传参数代表的是当前时间
* public Date(long date)
Date d2 = new Date(0); //如果构造方法中参数传为0代表的是1970年1月1日 unix的纪元时间
成员方法
* public long getTime() //通过时间对象获取毫秒值
* public void setTime(long time) ////设置毫秒值,改变时间对象
DateFormat类的概述
* DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDateFormat
DateFormat df1 = DateFormat.getDateInstance(); //相当于父类引用指向子类对象,右边的方法返回一个子类对象
SimpleDateFormat构造方法
* public SimpleDateFormat()
* public SimpleDateFormat(String pattern)
成员方法
* public final String format(Date date)
* public Date parse(String source)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//创建日期格式化类对象
String str = "2000年08月08日 08:08:08";
Date d = sdf.parse(str); //将时间字符串转换成日期对象
ctrl+e:抛出异常
:Calendar类的概述
* Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
成员方法
* public static Calendar getInstance()
* public int get(int field)
* public void add(int field,int amount)
* public final void set(int year,int month,int date)
Calendar c = Calendar.getInstance(); //父类引用指向子类对象
重写了toString方法打印了对象中所有的属性
System.out.println(c.get(Calendar.YEAR)); //通过字段获取对应的值