黑马程序员<a href="http://www.itheima.com" target="blank">java培训</a>
第十四天笔记
1.正则表达式概述与基本使用
正则表达式是用来校验符合正确规则的一串字符。
介绍规则:
在String类中有一个matcher方法,它有一个正则表达式的连接。
package lm.Regex;
import java.util.Scanner;
/**
*
* @author Administrator
*
/**
* 验证qq号码 需求 1.长度5-15之间的数字 2.要求0不能开头
*
* 思路: 1。考虑做一个方法 返回值:boolean 参数:String 要验证的qq号码
* 2.从键盘输入一个qq号码 Scanner
* 3.完成方法checkQQ的功能
*
*/
public class RegexDemo2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的QQ号:");
if( method2(sc.nextLine()))
{
System.out.println("验证成功");
}
else
{
System.out.println("验证失敗");
}
}
/*
* 正則表達式驗證QQ
*/
private static Boolean method2(String s) {
return s.matches("[1-9][0-9]{4,14}");
}
}
2.正则表达式的组成规则
字符
x 字符 x。举例:'a'表示字符a
\ 反斜线字符。
新行(换行)符 ('u000A')
回车符 ('u000D')
字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
[0-9] 0到9的字符都包括
预定义字符类
. 任何字符。我的就是.字符本身,怎么表示呢? .
d 数字:[0-9]
w 单词字符:[a-zA-Z_0-9]
在正则表达式里面组成单词的东西必须有这些东西组成
边界匹配器
^ 行的开头 (就业班js中使用)
$ 行的结尾 (就业班js中使用)
单词边界
就是不是单词字符的地方。
举例:hello world?haha;xixi
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
3.正则表达式的判断功能
String 类中
public boolean matches(String regex)
参数:是正则表达式(规则)
返回值:代表是否与给定的规则匹配。
4.邮箱的校验案例
正则: . 匹配的是任意字符
现在要匹配 “.” .
在java中”” 需要使用 \
在正则中的. 到java代码中就需要写在 \.
package lm.Regex; import java.util.Scanner; /* * 校验邮箱 * abc@163.com * 12345@qq.com * admin@yahoo.com.cn * user@itcat.cn * * 分析: * 1.定义一个方法checkEmail * 参数:要校验的邮箱 返回值:是否符合规则 * 2.完成checkEmail方法功能 * 1.定义邮箱的规则 * [0-9a-z_A-Z]{3,10}@[0-9a-z_A-Z]{2,5}.[a-zA-Z]{2,3} * */ public class RegexDemo3 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入你的郵箱号:"); Boolean b=method2(sc.nextLine()); if (b) { System.out.println(b); System.out.println("验证成功"); } else { System.out.println(b); System.out.println("验证失敗"); } } /* * 正則表達式驗證QQ */ private static Boolean method2(String s) { Boolean flag = false; String regex1="[0-9a-z_A-Z]{3,10}@[0-9a-z_A-Z]{2,15}\.[a-zA-z]{2,3}"; String regex2="\w{3,10}@\w{2,10}(\.\w{2,3})+"; if (s.matches(regex2)) { flag = true; } return flag; } }
5.正则表达式的分割功能
使用String类的split方法
Public String[] split(String regex)
参数:正则表达式(规则);
返回值:数组,它是根据规则切割后的信息.
package lm.Regex; import java.lang.reflect.Array; import java.util.Arrays; /** * * @author Administrator * 分割操作 需求 String s="aa,bb,cc"; 要得到 ["aa","bb","cc"] * String ss = "aa.bb.cc"; * String s1 = "D:\java0309\day14-常见对象\PPT"; */ public class RegexDemo5 { public static void main(String[] args) { String s="aa,bb,cc"; String[] str=s.split(","); System.out.println(Arrays.toString(str)); String ss = "aa.bb.cc"; String[] str1=ss.split("\."); System.out.println(Arrays.toString(str1)); String s1 = "D:\java0309\day14-常见对象\PPT"; String[] str2=s1.split("\\"); System.out.println(Arrays.toString(str2)); } }
6.Math类概述和方法使用
Java.lang.Math类它是一个关于数学运算操作类。
它中的方法是static,使用时直接Math.方法名.
package lm.math; /** * Math 类的标记 * @author Administrator * */ public class MathDemo1 { public static void main(String[] args) { //1.绝对值 System.out.println(Math.abs(-10)); // 2.四舍五入 System.out.println(Math.round(15.9)); // 3.两个数的最大值与最小值 System.out.println(Math.max(20, 10)); System.out.println(Math.min(20, 10)); // 4.开平方 int a=(int) Math.sqrt(9); System.out.println(a); // 5.求某个数的n次方 int b=(int) Math.pow(10, 3); System.out.println(b); //6.求某个浮点数的向下值 向上值 double c=3.14; double d=Math.floor(c); double e=Math.ceil(c); System.out.println(d); System.out.println(e); //求随机数 int radom=(int) (Math.random()*100+1); System.out.println(radom); } }
7.如何获取任意范围内的随机数
获取50-100之间的随机数
int n=(int) (Math.random()*51+50) ;
(Math.random()*(100-50+1))+50;
package lm.math; /** * * @author Administrator * Math类中方法介绍 */ public class MathDemo2 { public static void main(String[] args) { //// 公式: Math.random(end-start+1)+start int c=(int) (Math.random()*100)+1; System.out.println("1-100的随机数"+c); //50-100 不包含100 int d=(int) (Math.random()*50+50); System.out.println("50-100的随机数"+d); //51-100 不包含50 int a=(int) (Math.random()*50+51); System.out.println("51-100的随机数"+a); //得到0-49之间的数 int b=(int) (Math.random()*49); System.out.println("0-49的随机数"+b); //---得到的是50-101 得到了50-100之间的随机数 int n=(int) (Math.random()*51+50) ; System.out.println("50-101的随机数"+n); } }
8.random类,是jdk1.5以后提供的一个可以获取随机数的类
总结:
构造方法:
New Random () 使用毫秒值作为种子
New Random (long seed) 使用指定值作为种子,每次的得到的随机数是一样的
成员方法:
NextInt();返回一个int范围的随机数
NextInt(n);返回一个n范围之内的随机数
9.Date的概述和构造方法
Date类要求大家掌握,在就业班中会经常使用.
Java.util包下的Date
Date类它代表一个时间点,精确到毫秒.
10.DateFormat实现日期和字符串的相互转换
DateFormat类它可以在Date----String之间做相互转换。
Date---àString 格式化
String-àDate 解析
DateFormat类在java.text包下.
在实际开发中对字符中与Date进行相互转换,一般情况下使用DateFormat类的子类
SimpleDateFormat
- 怎样将一个Date对象格式化成指定效果的字符串
使用DateFormat类中提供的format方法。
public String format(Date date)
SimpleDateFormat类中也有这个方法。
问题:SimpleDateFormat它有无参数构造,它可以调用format方法对一个Date对象进行格式化,但是得到的不是我们想要的效果,怎样处理?
通知SimpleDateFormat它在做format操作时,得到字符串是我们指定的一个效果,就可以。
可以在创建SimpleDateFormat时指定一个模板 new SimpleDateFormat(String pattern)
package lm.datefomat; import java.text.SimpleDateFormat; import java.util.Date; /** * * DateFormat进行将一个Date对象格式化成指定效果的字符串 */ public class DateFormDemo1 { public static void main(String[] args) { //方法一 Date d=new Date(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String s= sdf.format(d); System.out.println(s); //方法二 SimpleDateFormat sdf1=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String s1= sdf.format(System.currentTimeMillis()); System.out.println(s1); } }