常用API,异常机制,random,number,BigInterger&BigDecial,Math,,error,Eception,,try..cath..,Throws,Finally,自定场景

Random

使用

package day_7_14_Random;

import java.util.Random;


/**
 * 随机数
 * 
 * @author 啊超
 * @Date 2021年7月14日
 */
public class Random_1 {
	public static void main(String[] args){
		//创建随机数生成器
		Random random=new Random();
		//从0--4中,随机生成一次
		int i=random.nextInt(5);
		System.out.println(i);
		
		//生成10--20
		//nextInt(最大值-最小值+1)+最小值
		int x=random.nextInt(11)+10;
		System.out.println(x);
		// 5--9
		System.out.println(random.nextInt(9-5+1)+5);
		//生成 a-z
		int c=random.nextInt(26);
		char c1=(char)(c+97);
		System.out.println(c1);
	}
}

Number

DecimalFormat  //10进制格式

package day_14_number;
import java.text.DecimalFormat;
/**
 * 
 * 
 * 
 * 
 * java.text.DecimalFormat;
 *                     #任意数字0-9单个数字
 *                     ,千分位
 *                     .小数点
 *                     0补位 
 * 
 * 
 * @author 啊超
 * @Date 2021年7月14日
 */
public class Number_01 {

	public static void main(String[] args) {
		//创建数字格式化对象
		//加入千分位
		DecimalFormat df=new DecimalFormat(",#,####,###");
	
		System.out.println(df.format(123456789));//123,456,789
		//加入千分位,保留两位小数
		df=new DecimalFormat(",######.##");
		//会四舍五入
		System.out.println(df.format(1234567.887));  //1,234567.89
		//加入千分位,保留两位小数,不够补0
		df=new DecimalFormat(",###.0000");
		System.out.println(df.format(123456.155)); //123,456.1550
	}
}

BigInteger&BigDecimal   //大整数&大十进制

概述

java.lang.Math提供了一系列静态方法用于科学计算。其方法的参数和返回

值类型一般为double型。

abs 绝对值 acos,asin,atan,cos,sin,tan 三角函数  sqrt 平方根

pow(double a,doble b) a的b次幂  log 自然对数

exp e为底指数

max(double a,double b)

min(double a,double b)

random() 返回0.0到1.0的随机数

long round(double a) double型数据a转换为long型(四舍五入)

toDegrees(double angrad) 弧度—>角度

toRadians(double angdeg) 角度—>弧度

8、BigInteger和BigDecimal类

8.1 BigInteger

1、Integer类作为int的包装类,能存储的最大整型值为231-1,Long类也是有限的, 最大为263-1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类 都无能为力,更不用说进行运算了。

2、java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger 提供

所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。 另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、 位操作以及一些其他操作。

3、构造器

BigInteger(String val):根据字符串构建BigInteger对象

4、常用方法

public BigInteger abs():返回此 BigInteger 的绝对值的 BigInteger。

BigInteger add(BigInteger val) :返回其值为 (this + val) 的 BigInteger

BigInteger subtract(BigInteger val) :返回其值为 (this - val) 的 BigInteger

BigInteger multiply(BigInteger val) :返回其值为 (this * val) 的 BigInteger

BigInteger divide(BigInteger val) :返回其值为 (this / val) 的 BigInteger。整数 相除只保留整数部分。

BigInteger remainder(BigInteger val) :返回其值为 (this % val) 的 BigInteger。

BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 后跟(this % val) 的两个 BigInteger 的数组。

BigInteger pow(int exponent) :返回其值为 (thisexponent) 的 BigInteger。

8.2 BigDecimal

l一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中, 要求数字精度比较高,故用到java.math.BigDecimal类。

lBigDecimal类支持不可变的、任意精度的有符号十进制定点数。

l构造器

public BigDecimal(double val)

public BigDecimal(String val)

l常用方法

public BigDecimal add(BigDecimal augend)

public BigDecimal subtract(BigDecimal subtrahend)

public BigDecimal multiply(BigDecimal multiplicand)

public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)

使用

package day_14_number;
import java.math.BigInteger;
import java.math.BigDecimal;
/**
 * 
 * java.math.BigInteger和BigDecimal精度极高
 * 
 * @author 啊超
 * @Date 2021年7月14日
 */
public class bigDecimal_1 {
	public static void main(String[] args){
		//这个创建对象的时候,需要传递字符串的数字
		BigInteger bi=new BigInteger("33");
		
		BigDecimal v1=new BigDecimal("20");
		BigDecimal v2=new BigDecimal("20");
		
		//+不能 v1+v2,因为这是应用类型
		BigDecimal v3=v1.add(v2);
		//-
		v3=v1.subtract(v2);
		//*
		v3=v1.multiply(v2);
		// /
		v3=v1.remainder(v2);
		System.out.println(v3);
	}

}

阶乘

package day_14_number;

import java.math.BigDecimal;
public class BigDecimal_02 {
	public static void main(String[] args){
		long result=m1(33);
		System.out.println(result);
		
		BigDecimal result1=m2(100);
		System.out.println(result1);
		
	}
	public static long m1(int n){
		if(n<=1){
			return 1;
		}return n*m1(n-1);
		
	}
	public static BigDecimal m2(int n){
		if(n<=1){
			return new BigDecimal(1);
		}return new BigDecimal(n).multiply(m2(n-1));
	}
}

Math

概述

math 提供了科学计算和基本的数字操作方法
 * 全部都是静态方法,类名调用即可,并且Match在java.lang下,不需要导包

常用方法

package _Match;
/**
 * 
 * math 提供了科学计算和基本的数字操作方法
 * 全部都是静态方法,类名调用即可,并且Match在java.lang下,不需要导包
 * 
 * @author 啊超
 * @Date 2021年7月14日
 */
public class math_1 {
	public static void main(String[] args){
		//abs 绝对值
		System.out.println(Math.abs(-25)); //25
		//ceil 向上取整,小数大于0就进1
		System.out.println(Math.ceil(1.001)); //2
		//floor 向下取整,舍弃小数
		System.out.println(Math.floor(1.9)); //1.0
		//sqrt 平方根
		System.out.println(Math.sqrt(4)); //2.0
		//cbrt 立方根
		System.out.println(Math.cbrt(8));  //2.0
		//rint 四舍五入
		//银行家算法,四舍六入五考虑,取偶数
		System.out.println(Math.rint(2.5)); //2.0
		System.out.println(Math.rint(3.5)); // 4.0
		
		// pow N次方
		System.out.println(Math.pow(2,3));   //8.0
	}
}

异常机制

之前见过的异常

1 下标越界(数组)

2 空指针异常(数组,面向对象)

3 栈内存移出(递归)

4 类型转换异常(面向对象)

5 数字格式化异常(常用API)

概述

异常 : 
 *         是java提供的识别错误的响应机制,可以使程序更加健壮 易于调试
 *         异常是错误的另外一种说法
 *         java中 有个专门模拟所有异常的类,Throwable,是异常类的祖类,所有的异常类 都是它的子类
 *         如果程序 出现了异常,会终止程序生命周期执行,所以需要进行处理,
 *         
 * 
 * 异常处理形式 
 *         try...catch....  : 解决异常,一般用在客户端(调用处)
 *         throws : 抛异常,一般用在类库端(服务端,被调用的地方)
 *         throw : 异常源,制作异常,创建异常对象

继承体系

 Error

概念

x系统内部错误,这类错误由系统进行处理,程序本身无需捕获处理。

比如: OOM(内存溢出),VirturalMachineError(虚拟机错误),StackOverflowError(堆栈溢出错误等),一般发生这种情况,JVM会选择终止程序。

Exception

概述

Exception是所有异常类的父类。分为非RuntimeException和RuntimeException 。

n非RuntimeException 

指程序编译时需要捕获或处理的异常,如IOException、自定义异常等。属于checked异常。

nRuntimeException 

指程序编译时不需要捕获或处理的异常,如:NullPointerException等。属于unchecked异常。一般是由程序员粗心导致的。如空指针异常、数组越界、类型转换异常等。

常用方法

 try...cath...

第一种

package com;

/**
 * 异常 : 
 * 		是java提供的识别错误的响应机制,可以使程序更加健壮 易于调试
 * 		异常是错误的另外一种说法
 * 		java中 有个专门模拟所有异常的类,Throwable,是异常类的祖类,所有的异常类 都是它的子类
 * 		如果程序 出现了异常,会终止程序生命周期执行,所以需要进行处理,
 * 		
 * 
 * 异常处理形式 
 * 		try...catch....  : 解决异常,一般用在客户端(调用处)
 * 		throws : 抛异常,一般用在类库端(服务端,被调用的地方)
 * 		throw : 异常源,制作异常,创建异常对象
 * 
 *
 */
public class Exception_01 {
	public static void main(String[] args) {
		int a = 2;
		int b = 0;
		// 使用if可以解决大部分错误,但是if只能解决可预知的,不可预知的没法解决
		if (b == 0) {
			System.out.println("除数不能为0");
			return;
		}
		System.out.println(a/b);
	}
}
package com;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
 * 语法 : 
 * 	try{
 * 		高风险代码;
 * }catch (异常类型 变量){
 * 		出错后的操作;
 * }
 * 
 * 
 */
public class Exception_02 {
	public static void main(String[] args) {
		try {
			// 高风险代码,可能出错的代码
			// 可能找不到这个文件,所以我们要处理一下
			FileInputStream fis = new FileInputStream("D://Aa.txt");
			// try中 出错语句之后的代码不执行,执行执行catch
			System.out.println("xxx");
		} catch (FileNotFoundException e) {
			// 打印追踪栈帧,程序员排错方便
			// e.printStackTrace();
			// 获取错误信息,响应用户方便
			String msg = e.getMessage();
			System.out.println(msg);
			// 出错后的处理措施
			// System.out.println("文件不存在");
		}
		// 代码可以正常执行
		System.out.println("===============");
	}
}

第二种

try{

 高风险代码

}catch(异常类型 变量){

}catch(异常类型 变量){

}

public static void main(String[] args) {
		try {
			new FileInputStream("D:/a.t2xt");
			String s = null;
			s.equals("");
			// 可以写多个catch 捕捉多个异常,进行不同的处理
			// 多个异常类型之间不能有继承关系,否则就必须是从子类到父类,否则会因为多态的原因把异常对象获取
		} catch (FileNotFoundException e) {
			System.out.println("找不到文件");
		} catch (NullPointerException e) {
			System.out.println("空指针");
		}
	}

第三种

 java1.7新改进
 * 
 * 自动关闭资源
 * 
 * try( 开启资源; ){
 *         高风险代码;
 * }catch(异常类型 变量){
 * 
 * }

package com;

import java.io.FileInputStream;
import java.io.IOException;

/**
 * java1.7新改进
 * 
 * 自动关闭资源
 * 
 * try( 开启资源; ){
 * 		高风险代码;
 * }catch(异常类型 变量){
 * 
 * }
 * 
 * 
 */
public class Exception_07 {
	public static void main(String[] args) {
		FileInputStream fis1 = null;
		try(	
				FileInputStream fis = new FileInputStream("D://a.txt");
				// 资源2
				// 资源3
				){
				// 操作 , 自动关闭,不用finally
			fis1=fis;
			System.out.println(fis.read());
		}catch (Exception e) {
			e.printStackTrace();
		}
		try {
			// Stream Closed
			System.out.println(fis1.read());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Throws

throws 把异常抛出,是一种提醒,跟调用处说明,这里可能有异常
 * 
 * 可以抛出多个异常,多个之间 逗号隔开

package com;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
 * throws 把异常抛出,是一种提醒,跟调用处说明,这里可能有异常
 * 
 * 可以抛出多个异常,多个之间 逗号隔开
 * 
 *
 */
public class Exception_04 {

	public static void main(String[] args) {
		try {
			m1();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (NullPointerException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("=========");
	}

	public static void m1() throws FileNotFoundException, Exception,
			NullPointerException {
		m2();
	}

	public static void m2() throws FileNotFoundException {
		new FileInputStream("");
	}
}

Finally

package com;

/**
 * finally : 是必须执行的语句,只有一种情况不执行,System.exit(0);
 * 
 * 1 finally 不能单独使用 2 必须和try一起 或者 try..catch 一起使用
 * 
 * @author 天亮教育-帅气多汁你泽哥
 * @Date 2021年7月14日 下午2:18:39
 */
public class Exception_05 {
	public static void main(String[] args) {
		try {
			String s = null;
			s.equals("");
			// 空指针异常,终止程序生命周期
		} finally {
			// 必须执行
			System.out.println("=====");
		}
		// 因为catch,所以没有办法捕捉异常,依旧会终止生命周期,所以下面代码不会执行
		System.out.println("-----------=");
	}
}

不能有更宽泛的异常

class A {
	public void m1() throws FileNotFoundException {

	}
}

class B extends A {
	// 抛出的异常类,要么和父类抛出的异常类一样
	// 要么就是父类抛出的异常类的子类
	// 要么 就不抛出异常
	public void m1() throws FileNotFoundException {

	}

自定义异常

语法

自定义异常类 : 
 *         1 继承一个已有的异常类
 *                 一般我们继承Exception即可
 *                 如果是运行时异常,则继续RuntimeException
 *         2 公共的无参构造
 *         3 有参构造,传入String,是错误信息

package ThrowExample.test;

/**
 * 自定义异常类 : 
 * 		1 继承一个已有的异常类
 * 				一般我们继承Exception即可
 * 				如果是运行时异常,则继续RuntimeException
 * 		2 公共的无参构造
 * 		3 有参构造,传入String,是错误信息
 * 
 * 
 */
public class Test extends Exception {
	public Test() {
	}

	public Test(String msg) {
		super(msg);
	}

}

应用场景

 * 需求 :

 * 完成用户登陆

 * 1 用户拥有 username,password,nickname三个属性

 * 2 业务逻辑类,提供登陆方法,校验是否登陆成功

 * 准备用户数组,保存用户信息(相当于是数据库)

 * 3 入参是 用户名和密码 , 出参也是用户对象,登陆成功之后,返回用户的所有信息

 * 4 客户端类,接收用户输入,进行登陆校验

用户类

数据库

dao

service

controller

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值