异常
简述什么是异常、异常的继承体系?
在java程序运行过程中,出现的不正常的情况,出现的错误,称为异常.
简述异常的处理方式?
可以进行跳转,捕获以程序结束,也可以抛出.
throw和throws关键字的使用位置和格式?
throw是对异常对象的抛出,一般放在方法中.throws是对异常的声明,一般放在方法名后边.
throw new 异常名称() throws 异常类名
多个catch处理的注意事项?
单个try块能有许多catch块,当try块有“可能引起不同类型异常”的语句时,多个catch块是必须的。
异常捕获的先后顺序应该“从小到大”。
简述finally关键字的特点和作用?
无论发生了什么,finally中的代码一定会被执行,除非虚拟机关了.
代码中有必须要执行的代码(比如释放资源)的情况。
Throwable类的常见方法及方法描述?
toString() 输出该异常的类名。
getMessage() 输出异常的信息,需要通过构造方法传入异常信息(例如病态信息)。
printStackTrace() 打印栈信息。
自定义异常的步骤?
定义一个异常类继承Exception或RuntimeException
重写父类的方法
正则表达式
就是一个字符串
作用:不仅表示一个字符串,还可以表示一类字符串,表示一类字符串规则或者格式
正则表达式练习一:
模拟QQ登陆
/*正则表达式练习一:
模拟QQ登陆*/
public class Test01 {
public static void main(String[] args) {
Boolean flag;
Scanner sc = new Scanner(System.in);
do {
flag = false;
System.out.println("请输入您的QQ号(5-15位,全是数字,不能以0开头):");
String qq = sc.nextLine();
String regex = "[1-9][0-9]{4,14}";//中间千万不能有空格!!!
if(qq.matches(regex)) {
do {
System.out.println("请输入您的QQ密码(8-16位,至少包含数字/字母/字符两种组合):");
String psw = sc.nextLine();
String regex2 = "[0-9a-zA-Z!@#$%^&*()_+]{8,16}";
String regex3 = "[0-9]{8,16}";//全是数字
String regex4 = "[a-zA-Z]{8,16}";//全是字母
String regex5 = "[!@#$%^&*()_+]{8,16}";//全是字符
if(psw.matches(regex2)&&!psw.matches(regex3)&&!psw.matches(regex4)&&!psw.matches(regex5)) {
System.out.println("欢迎登陆QQ!");
break;
}else {
System.out.println("您的输入有误,请重新输入!");
flag = true;
}
//8-16位,至少包含数字/字母/字符两种组合
//"[0-9a-zA-Z_@$@]{8,16}"
}while(flag);
break;
}else {
System.out.println("您的输入有误,请重新输入!");
flag = true;
}
}while(flag);
}
}
正则表达式知识点:
String str = "hfogoreg134";
String string = str.replaceAll("\\d", "*");
//String中使用正则表达式的方法;
//注意:\d在使用的时候要对\进行转义,前面要加个\
System.out.println(string);
//运行结果:hfogoreg***
正则表达式练习二:
猜数游戏
随机生成一个1 到100之间的整数,从键盘输入数字进行猜数,一共可以猜5次,如果猜小了在控制台输出猜小了,如果猜大了,在控制台输出猜大了,如果猜对了在控制台输入 恭喜你猜对了,并结束游戏。 注意当输入的不是数字或数字不合服规则时,不算次数
import java.util.Random;
import java.util.Scanner;
/*猜数游戏,随机生成一个1 到100之间的整数,从键盘输入数字进行猜数,一共可以猜5次,
如果猜小了在控制台输出猜小了,如果猜大了,在控制台输出猜大了,如果猜
对了在控制台输入 恭喜你猜对了,并结束游戏。 注意当输入的不是数字或数字不合服规则时,不算次数*/
public class Test01 {
public static void main(String[] args) {
System.out.println("*****欢迎来到猜数字小游戏*****");
Random r = new Random();
Scanner sc = new Scanner(System.in);
int count = 1;//从第一次开始
while(true) {
int num = r.nextInt(100) + 1;//电脑随机生成的数字
if(count > 5) {//在这里判断是否大于五,结果不大于所以一共五次
System.out.println("亲,您的次数免费用完了哦!如需继续玩,请充值哦!");
break;
}
System.out.println("亲,请输入您猜的数字呢(1-100):");
String guessStrNum = sc.nextLine();//因为后期要做字符串匹配,而且录入字符串也会减少很多问题.
String regex = "[1-9][0-9]?";
if(guessStrNum.matches(regex)||guessStrNum.matches("100")) {
int guessNum = Integer.parseInt(guessStrNum);
if(guessNum > num) {
System.out.println("亲,猜大了哦!");
count++;//第五次时,运算完是五
}else if(guessNum < num) {
System.out.println("亲,猜小了了哦!");
count++;//第五次时,运算完是五
}else {
System.out.println("恭喜您,猜对了呢!");
break;
}
}else {
System.out.println("亲,您的录入不合法呢!请重新录入哦!");
}
}
}
}