12异常
12.5自定义异常
12.5.1自定义异常的步骤
定义类:自定义异常类名(程序员自己写)继承Exception或者RuntimeException
如果继承Exception,属于编译异常
如果继承RountimeException属于运行异常一般是继承它
public class exe01 {
public static void main(String[] args) {
int age=0;
//要求范围在18-120之间,否则抛出一个自定义异常
if(!(age>=18&&age<=120)){
throw new AgeException("年龄需要在18~120之间");
}
System.out.println("你的年龄范围正确");
}
}
class AgeException extends RuntimeException{
public AgeException(String message){
super(message);
}//自定义异常,一般是继承RuntimeException
//把自定义异常做成运行时异常,好处:可以使用默认的处理机制
}
12.6throw和throws的对比
public class exe01 {
public static void main(String[] args) {
try{
showExce();
System.out.println("A");
}catch (Exception e){
System.out.println("B");
}finally{
System.out.println("C");
}
System.out.println("D");
}
public static void showExce() throws Exception{
//throws和throw的区别使用
throw new Exception();
}
}
13常用类
13.1包装类Wrapper
针对八种基本数据类型相应的引用类型——包装类
13.1.1包装类和基本数据的转换
装箱:基本类型->包装类型
拆箱:包装类型->基本类型
自动装箱底层调用的时valueOf方法
int n1=100;
Integer integer = new Integer(n1);
Integer integer1 = Integer.valueOf(n1);
//手动装箱,int->Integer
int i = integer.intValue();
//手动拆箱
//jdk5以后就可以完成自动装箱和自动拆箱
int n2=200;
//自动拆箱
Integer integer2 =n2;
三元运算符是一个整体,精度高优先
13.1.2包装类型和String相互转换
//包装类->String
Integer i =100;//自动装箱
String str1 = i+" ";
String str2=i.toString();
String str3=String.valueOf(i);
//String->包装类
String str4="12345";
Integer i1 = Integer.parseInt(str4);//使用到自动装箱
Integer i2 = new Integer(str4);//构造器
13.1.3Integer和Character类的常用方法
Integer.MIN_VALUE//返回最小值
Integer.MAX_VALUE//返回最大值
Character.isDigit(‘a’)//判断是不是数字
Character.isLetter(‘a’)//判断是不是字母
Character.isUpperCase(‘a’)//判断是不是大写
Character.isLowerCase(‘a’)//判断是不是小写
13.2JAVA_String类
13.2.1基本介绍
String 对象用于保存字符串,也就是一组字符序列
字符串常量对象是用双引号括起的字符序列
String是final类,不能被其他的类继承
String有属性private final char value[ ];用于存放字符串内容
value是一个final类型,不可以修改(这里指的是地址)
字符串的字符使用Unicode字符编码,一个字符占两个字节
String类较常用构造方法
String s1=new String();
String s2=new String(String original);
String s3=new String(char[]a);
String s4=new String(char [] a,int startindex,int count)
13.2.2String类的创建方式
//方式一
String s="hspedu";
//直接在常量池里面去找,如果有直接指向,如果没有则进行创建
//方式二
String s=new String ("hspedu");
//在堆里面创建一个空间,value值为常量池里数据的地址,如果有则直接指向,如果没有则进行创建
inter方法:当常量池中包含一个等于此String对象的字符串(用equals(Object)方法确定),则返回池中的字符串,否则,将此String对象添加到常量池中,并返回String对象的引用
13.2.3字符串的特性
String 是一个final类,代表不可变的字符序列
字符串是不可变的,一个字符串对象一旦被分配,其内容是不可变的
String a=“hello”;
String b=“abc”;
String c=a+b;//创建了3个对象
先创建了一个对象
将hello追加到这个里面
在将abc追加到这个对象里面去
最后将第一个对象的内容给到c
追源码看过程
String c=“hello”+"abc“;//创建了1个对象
13.2.4String常用方法
String类是保存字符串常量的,每次更新都需要重新开辟空间,效率较低。
equals:区分大小写,判断内容是否相等
equalsgnoreCase:忽略大小写的判断内容是否相等
length:获取字符的个数,字符串的长度
indexOf:获取字符在字符串中第一次出现的索引,索引从0开始,如果找不到,返回-1
lastlendexOf:获取字符在字符串中最后一次出现的索引,索引从0开始,如果找不到,返回-1
substring:截取指定范围的字串,当给一个数字x时是从x到末尾,当给两个数字x,y时从x开始,截取到索引为y-1的位置
trim:去前后空格
charAt:获取某索引处的字符,注意不能使用Str[index]这种方式
toUpperCase:把字符串全部换成大写
toLowerCase把字符串全部换成小写
concat:拼接字符串
replace:替换字符串中的字符
split:分割字符串
compareTo:比较两个字符串的大小;如果前者大返回正数,后者大返回负数,如果相等返回0;如果长度相同或者不相同,但是在进行比较时,可以区分大小,就返回字符的差值;
toCharArray:转换成字符数组
format:格式字符串,%s字符串 %c字符 %d整型 %.2f浮点型,这些%称为占位符,这些占位符由后面的变量来替换
13.2JAVA_Buffer类
Buffer代表可变的字符序列,可以对字符串内容进行增删,但是StringBuffer是可变长度的,StringBuffer是一个容器