第九章
捕捉异常
语法
try{
代码块1
}catch(异常类型 异常名){
处理异常
}
finally{
代码块2
}
try:尝试的意思
catch:抓的意思
finally:最终的 。用途:不管上面代码有没有异常,都会执行finally的代码块
先捕捉异常,再处理异常,处理完后执行finally语句
自定义异常
自定义异常的四步骤:
1.创建自定义异常类,方法:创建一个类继承Exception类
2.在方法中通过throw关键字抛出异常对象
3.如果在当前抛出异常的方法中处理异常,可以使用 try-catch 语句块捕获异常并处理,否则在方法的声明处通过throws 关键字指明要抛出给方法调用者的异常,继续进行下一步操作
4.在出现异常的方法的调用者中捕获并处理异常
语法:
class 异常类名 extends Exception{
public 异常名(String 参数名){
super(参数名)
}
}
参数就是自定义的异常
参数名随便定义,但注意得是String类型的
自己定义的异常得在其他类里创造异常条件才可抓捕处理
创造的条件需要使用throw关键字抛出异常
一般用判断条件来创造异常,所以throw关键字用在判断条件后面
语法:
throw new 异常名(“异常内容”)
自定义的异常需要层层抛出
所以在方法后面还得使用throws关键字,不过得是复数,因为异常不可能只有一个
throw:丢的意思
常见异常
第十章
char类型变量
char类型一般使用在单字符的情况
char类型用''
语法:char a = '你';
String类型变量
String类型一般用在多个字符中,俗称字符串
String类型用""
语法:String a = "你好";
在Java中,用双引号""包围起来的都是字符串类型,不能作为其他数据类型来使
声明的字符串变量必须经过初始化才能使用,否则编译器会报出“变量未初始化错误”
字符串声明方法
第一种:直接用“=”赋值
String a = "你好" 等同于 String st = String("你好");
第二种:传入字符类型数组
char a [] = {'g' , 'o' , 'o' , 'd'};
String s = String(a); 等同于 String s = new String("good");
或
char a [] = {'g' , 'o' , 'o' , 'd'};
String s = new String(a ,2 ,3); 等同于 String s = String("od");
该方法是提取字符数组a中的一部分字符创建字符串对象,第一个数字代表数组前索引,开始提取数组字符的位置。第二个数字代表提取数组字符的长度
以上方法的底层逻辑都是创建String类型对象,再调用String类型的构造方法
连接字符串
连接字符串用加号“+”
字符串不仅可以跟字符串相连接,还可以跟其他类型连接
字符串可以在输出语句外面相连接,也可以在输出语句里面相连接
获取字符串信息
获取字符串长度
字符串变量名.length();
语法:变量类型 变量名 = 字符串名.length();
获取字符串里第一次出现该元素的位置
字符串变量名.indexOf("要查找的元素");
语法:变量类型 变量名 = 字符串名.indexOf("要查找的元素");
获取字符串里最后一次出现该元素的位置
字符串变量名.lastindexOf("要查找的元素");
语法:变量类型 变量名 = 字符串名.lastindexOf("要查找的元素");
获取指定索引号的字符
字符串变量名.charAt(索引值);
语法:变量类型 变量名 = 字符串名.charAt(索引值);
获取子字符串
字符串名.ssubstring(前索引,后索引);前含后不含
前含后不含:意思是,开始包括前索引,结束不包括后索引。等于后索引-1
去除首尾空格
字符串名.trim();
用替换的方法去除空格
字符串名.replace(" " , "");
字符串的替换
字符串名.replace("被替换的字符" , "需要替换的字符");
判断字符串的开头
字符串名.startsWith("被判断的元素");
判断需要用布尔类型变量,所以语法:
boolean 变量名 = 字符串名.startsWith("被判断的元素");
判断字符串的结尾
字符串名.endsWith("被判断的元素");
判断字符串是否相等
第一种
字符串名.equals("被判断的字符串");
第二种
equalslgnoreCase()
忽略大小写情况去比较两个字符串是否相等
字符串名.equalslgnoreCase("被判断的字符串")
按照Unicode值去比较两个字符串的顺序
字符串名.compareTo(要比较的字符串);
字符串字母大小写转换
小写转换 字符串名.toLowerCase();
大写转换 字符串名.toUpperCase();
字符串的分割
字符串名.split("\\.");
第二种分割,分割的段数
后面的2决定分割的段数
字符串名.split("\\." , 2);
格式化字符串
String 被格式化的字符串名 = String.format(格式 , 字符串名);
append()方法
用于向字符串生成器中追加内容
语法:
字符串名.append(追加的内容)
insert()方法
输出时要调用toString方法
向字符串生成器中的指定位置插入数据内容
语法:
字符串名.insert(指定位置,内容)
delete()方法
用索引表示位置删除某些字符
语法:
字符串名.delete(开始的索引值,结束的索引值)前含后不含
第十一章
包装类
主要将基本数据类型封装在包装类中
包装类包含
Integer类、Byte类、Short类、Ling类、Float类、Double类、Character类、Boolean类
Number类是它们的父类
intValue()方法:返回int类型的值,不四舍五入,直接去小数点
数字处理
数字格式化
对象名.applyLocalizedPattern("###,###,###");//调用方法传入指定格式
String 变量名 = 对象名.format(12345678);//传入参数用String类型存储
对象名.setGroupingSize(3);//调用方法设定组数
对象名.setGroupingUsed(true);//setGroupingSize()方法使用开关
Math.toRadians()//角度转弧度,括号里传入参数
Math.tan()//求正切
Math.cbrt()//求平方根
Math.pow( , )//求某个数的几次方
Math.sin()//求正弦
Math.cos()//求余弦
Math.asin()//求反正弦
Math.acos()//求反余弦
Math.atan()//求反正切
Math.toDegrees()//弧度转角度
Math.exp(2)//求某个数的2次方,可自定义参数
Math.log()//求自然对数,即去lan的值
Math.log10(a)//求底数为10的a的对数
Math.sqrt()//求正整数的平方根
Math.ceil()//向上取整
Math.floor()//向下取整
Math.round()//将参数加上0.5取整数,然后强制转换成长整型
Math.rint()//求参数最接近的偶数
Math.max(a,b)//比较求最大值
Math.min(a,b);//比较求最小值
Math.abs(a);//求绝对值
对象名.nextInt()//取随机数,参数可自定义
对象名.nextDouble()//取随机小数,参数自定义
BigInteger类,int类型的包装类 ,不能存小数,只存整数
语法:BigInteger 对象名 = new BigInteger("999999999999999999999");//创建对象,传入参数
BigDecimal类,小数的包装类,只能存小数
语法:BigDecimal bb1 = new BigDecimal(1234567.123456);//创建对象,传入参数
对象名.multiply(对象名);//乘法
对象名.add(对象名)//加法
对象名.subtract(对象名)//减法
对象名.divide(对象名)//除法
对象名.remainder(对象名)//取余 BigDecimal类不可用
时间日期类 Date类
创建时间类对象表示当前时间
语法:Date 对象名 = new Date()
创建时间类对象,填入毫秒数,表示指定时间 注意:毫秒数后面要加入大写L
语法:Date 对象名 = new Date(123456789785L);
Date类提供的方法
d1.after(d2);判断d1时间段是否在d2时间段的前面
d1.before(d2);判断d1时间段是否在d2时间段的后面
对象名.getTime();获得1970年到现在所有的毫秒数
对象名.setTime(987785462545678L);设置指定时间毫秒数
日期时间格式化 DateFormat类 不能new对象,需要接入导包使用
日期格式化
语法:DateFormat 对象名 = DateFormat.getDateInstance();
时间格式化
DateFormat 对象名 = DateFormat.getTimeInstance();
日期时间格式化
DateFormat 对象名 = DateFormat.getInstance();
DateFormat的子类:SimpleDateFormat类
语法:SimpleDateFormat 对象名 = new SimpleDateFormat("格式 ");
System.out.println(对象名.format(时间毫秒数));
format();方法
任何格式化都需要用到
System类
控制台输出和计时操作
System.currentTimeMillis();记录以毫秒为单位的当前时间
最常用的记录时间方法,该方法可以获取1970年1月1日零点至今的毫秒数,
System.getenv(String name)获取指定环境变量值
System.getPropertise()确定当前系统属性
System.getProperty(String key)获取指定键盘描述的系统属性
System.setIn(InputStream in)重新分配”标准“输入流
Scanner类
要想使用就得引入该类
语法:import.java.util.Scanner
sc.nextInt(),int类型,获取一个int类型的值
sc.nextLine(),String类型,获取一个String类型的值
sc.nextShort(),short类型,获取一个short类型的值
sc.nextFloat(),float类型,获取一个float类型的值
sc.nextBtye(),byte类型,获取一个byte类型的值
sc.nextBoolean(),布尔类型,获取一个布尔类型的值
sc.close(),关闭扫描器
Scanner类扫描控制台语法:Scanner sc = new Scanner(System.in)
System.in表示控制台输入流