常用类及异常处理

五迷三道 提交于 2019-12-11 10:05:15

常用类及异常处理

一、数学相关的类

1.Math类

用于数学的运算

2.BigInteger类

可以表示比long范围更大的数字

3.BigDecimal类

可以精确的表示小数

二、获得随机数的方式

1.Math类中random方法

/*static double random() 
 返回带正号的double值,该值大于等于0.0且小于1.0。*/ 
double d = Math.random();
System.out.println(d);
/*获取a~b之间的随机数
随机数*(最大值-最小值)+最小值*/
double d = Math.random();		
double d1 =d*(b-a))+a;
System.out.println(d);

2.Random类

//nextInt()方法	产生的随机数是int范围内一个
Random rd = new Random();
System.out.println(rd.nextInt());
System.out.println(rd.nextInt(10));	//随机产生[0-10)以内的整数	

3.ThreadLocalRandom

ThreadLocalRandom current = ThreadLocalRandom.current();
System.out.println(current.nextInt());//随机产生数
System.out.println(current.nextInt(10));//随机产生[0-10)以内的整数
System.out.println(current.nextInt(400,500));//随机产生[400-500)以内的数

4.UUID类

生成不会重复的128位的值,经常用来做唯一标识ID经常用来做唯一标识ID,是ip+当前时间的毫秒值混合加密

UUID uuid = UUID.RandomUUID();

三、日期类

1.Date类

		//Date()	获取当前系统时间
		Date date = new Date();
		System.out.println(date);
		//Date(long date)	根据输入的毫秒值创建一个时间
		long millis = System.currentTimeMillis();
		Date date2 = new  Date(millis);
		System.out.println(date2);

2.SimpleDateFormat类

允许进行格式化(日期 ----> 文本)、解析(文本 ----->日期)和规范化

/*yyyy 表示年
 * MM  表示月
 * dd  表示日
 * HH  表示时
 * mm  表示分钟
 * ss  表示秒*/
//将日期格式化为固定的文本
SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.d HH:mm:ss");
String string = format.format(date);
System.out.println(string);
//将文本转换为日期
String str = "2019.09.19 19:33:37";
Date d = format.parse(str);
System.out.println(d);

3.Calendar类

Calendar c = Calendar.getInstance();
System.out.println(instance.get(c.DATE));
System.out.println(instance.get(c.MONTH));//月份从0开始到11结束
System.out.println(instance.get(c.YEAR));	

四、正则表达式(了解)

[] 中的内容表示可以取的内容,如果没有取多少位 ,一个[]对应一个字符
{} 中的数字表示匹配多少位

String str = "abc";
System.out.println(str.matches("[abc][b][abc]"));
System.out.println(str.matches("[abc]{3}"));
System.out.println(str.matches("[a-z]{3}"));

五、异常概念及常见异常

概念

java中程序不能正常运行出现的一些特殊情况

常见异常

1.空指针异常 java.lang.NullPointerException

当使用的对象(调用对象的方法或字段)没有引用或值为null

2.数组索引越界异常 java.lang.ArrayIndexOutOfBoundsException

数组下标越界异常

3.类型转换异常 java.lang.ClassCastException

如果两个类不存在继承关系,且要相互转换时抛出此异常

4.数学运算异常 java.lang.ArithmeticException

5.参数非法异常 java.lang.IllegalArgumentException

六、异常的体系结构

​ Throwable
​ |—— Error (错误) jvm级别 StackOverflowError栈内存溢出
​ |—— Exception(异常)代码级别 一般程序员都可以排除解决
​ |_ 运行时异常(编译不会报错,运行的时候才报错) RuntimeException及其子类都为运行时异常
​ |_ 非运行时异常(编译的时候就必须处理的异常)

七、异常处理

抛出异常

抛给调用方直到抛给jvm为止

throw在方法的内部抛出异常对象;throws在方法参数列表后面抛出异常类型

捕获异常

		try{
			//可能产生异常的代码
		}catch(异常类型  对象名){
			/*对异常进行操作:
			1.打印异常信息
			2.可以存储异常日志 集中处理  io流
			3.抛出去throw异常对象;*/
		}

八、finally语句块

		try-catch语句块
		finally{
		//无论是否发生异常都要执行的代码
	 	}

注意:1.不论上面是否出现异常或者其他情况,finally中的代码都会执行,哪怕有return都会执行,除非虚拟机提前退出,如果

try有return语句,返回值先返回,执行完成finally中的代码再结束当前方法。

2.finally中一般放关闭流或释放系统资源的代码

final finalize finally三者的区别

final是一个修饰符,表示最终的,不能被更改
finalzie是Object中关于垃圾回收一个方法
finally是异常处理中如果需要有执行的代码,需要去finally中去执行

九、自定义异常

自定义类继承异常类

参照其他异常通过Exception设置异常提示信息

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!