正则表达式
概述: 正确规则的表达式,在java中我们用字符串来表示。
正则表达式的组成规则: 规则字符在java.util.regex Pattern类中
案例演示: 利用正则去校验qq号码,和不利用正则表达式去校验qq号码对比。
public class Demo {
public static void main(String[] args) {
// 校验qq号码.
// 1:要求必须是5-15位数字
// 2:0不能开头
Scanner scanner = new Scanner(System.in);
System.out.println("请输入qq号码:");
String qq = scanner.nextLine();
//使用正则表达式判断
String regex ="[1-9][0-9]{4,14}";
boolean b = qq.matches(regex);
if(b){
System.out.println("qq号码输入正确");
}else
{
System.out.println("qq号码输入错误" );
}
//不使用正则表达式判断
boolean b1=false;
if(qq.length()>=5&&qq.length()<=15){
if(!qq.startsWith("0")){
for (int i = 1; i < qq.length(); i++) {
if(qq.charAt(i)>='0'&&qq.charAt(i)<='9'){
b1=true;
}
else{
b1=false;
break;
}
}
}
else{
b1=false;
}
}
else{
b1=false;
}
if(b1){
System.out.println("qq号码输入正确");
}else
{
System.out.println("qq号码输入错误" );
}
}
}
需求:我有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”
public class Demo5 {
public static void main(String[] args) {
String str="91 27 46 38 50";
String regex=" +";
String[] strings = str.split(regex);
int[] ints=new int[strings.length];
for (int i = 0; i < ints.length; i++) {
ints[i]=Integer.valueOf(strings[i]);
}
Arrays.sort(ints);
System.out.println(Arrays.toString(ints));
}
}
Pattern和Matcher类
正则的获取功能需要Pattern和Matcher类来获取。
通过JDK提供的API查询Pattern类得到的典型的调用顺序
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(string);
boolean b = m.matches();
案例演示:
需求:获取下面这个字符串中由三个字符组成的单词 正则表达式 \\b[a-z]{3}\\b
da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo2 {
public static void main(String[] args) {
// 需求:获取下面这个字符串中由三个字符组成的单词 正则表达式 \\b[a-z]{3}\\b
da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?
String regex="\\b[a-z]{3}\\b";
String string="da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
泛型(Generic)
概述: 是一种把类明确的工作推迟到创建对象,或者调用方法时才去明确的特殊类型。
泛型的格式: <数据类型> 这里的数据类型只能是引用数据类型
泛型好处:
(1): 把运行时期的问题提前到了编译期间
(2): 避免了强制类型转换
(3):优化了程序设计,解决了黄色警告线
注意:泛型只在编译期有效 但在运行期就擦除了