java基础第十一天 异常

来源:互联网 发布:js 滚动字幕特效 编辑:程序博客网 时间:2024/06/07 05:03
#1、异常处理


异常定义:程序在运行过程中,出现了不正常的情况,叫异常


##1.分类:


执行过程中发生异常非为两类:
1、ERROR:一般是由系统级别的异常,不需要我们用代码处理
2、Exception:
1、运行时异常:
NullPointerException 
ArithmeticException 
ArrayIndexOutOfBoundsException 
ClassCastException
2、编译时异常(受检异常)
例如SQLException,IOException,必须使用代码处理


运行时异常和编译时异常的区别:
运行时异常在程序运行过程中发生,不需要使用代码进行处理,编译时异常是在编译时就要处理的异常。


##2.处理


java是通过try catch finally 三个关键字来处理异常的


格式1:

try{
//要处理的代码块
//代码越少越好
}
catch(异常类型 异常实例){
//进行异常处理
}
finally{
//这里的代码一定会执行
//主要用来释放资源
}


格式2:


try{
//要处理的代码块
//代码越少越好
}
catch(异常类型 异常实例){
//进行异常处理
}
catch(异常类型 异常实例){
//进行异常处理
}


格式3:


try{
//要处理的代码块
//代码越少越好
}
catch(异常类型 | 异常类型 异常实例 ){
//进行异常处理
}


格式4:


try{
//要处理的代码块
//代码越少越好
}
finally{
//这里的代码一定会执行
//主要用来释放资源
}


注意:finally不论在try代码块中是否发生了异常事件,catch语句是否执行,catch语句是否有异常,catch语句中是否有return,finally块中的语句都会被执行。如果有return,那么会在return之前执行。


##3.抛出异常
java是通过throws和throw来抛出异常的


1、throws写在方法结尾,后面紧跟需要抛出的异常类型,表明该方法需要被调用者处理这些异常


如果方法不想处理异常,就可以直接通过throws抛出
2、throw可以向方法上抛出异常,可以卸载方法,try语句块,catch语句块里面


如果抛出的是受检异常,那么必须和throws配合使用,例如:
public static Date parseDate1(String source) throws Exception{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
try {
return simpleDateFormat.parse(source);
} catch (ParseException e) {
throw new Exception("日期格式错误:"+e.getMessage());
}
}




#2、API


API:Application Programming Interface(应用程序接口)  
是程序员了解某种语言最基本途径  
我们是通过api来掌握某种开发语言的,例如java  
#3、包装类
每个基本类型都对应一个包装类:


 * byte Byte
 * short Short
 * char Character
 * int Integer
 * long Long
 * float Float
 * double Double
 * boolean Boolean


包装类能够自动装箱和拆箱,就是基本类型和包装类型能自由转换。


#4、Integer


构造方法:


Integer(int value) 
       构造一个新分配的 Integer 对象,它表示指定的 int 值。 
Integer(String s) 
       构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。 




Integer其他进制转换(了解)


toBinaryString(int i) 
        以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。 
static String toHexString(int i) 
       以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。 
static String toOctalString(int i) 
以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。


常用方法:


获取基本类型:
int intValue() 
        以 int 类型返回该 Integer 的值。 
long longValue() 
        以 long 类型返回该 Integer 的值。 
short shortValue() 
        以 short 类型返回该 Integer 的值。       


 范围:       
 
static int MAX_VALUE 
        值为 231-1 的常量,它表示 int 类型能够表示的最大值。 
static int MIN_VALUE 
       值为 -231 的常量,它表示 int 类型能够表示的最小值。 
        
 与字符串数字相互装换:


valueOf(String s) 
     返回保存指定的 String 的值的 Integer 对象。
     
parseInt(String s)
  返回保存指定的 String 的值的 int类型。


Integer特殊知识点:


-128到127之间的整数都在常量池,使用==来比较的时候,比较的是int原生数据类型的数值
超出这个范围,就会在heap中开辟地址保存,这是比较的是地址值


#5、String


字符串:就是多个字符组成的一串数据,也可以看做是字符数组  
特点:  
由String定义的字符串一般进常量池  
他定义的字符串不能被修改  


面试题:


//String s = new String("123");和String s = "1234";有什么区别,分别创建了几个对象
//2个 1个

字符串拼接:

//String s1="123",s2="456";
//String s3 = s1+s2;//会在常量池重新生成一个字符串常量,原来的123和456等待被回收
//s3 123456
//如果有大量的字符串拼接,有什么弊端?会耗费更多的系统资源,大量字符串拼接不建议使用+


字符串常量和变量参与计算的不同结果:


String a = "javaEE";
String b = "java"+"EE";
System.out.println(a==b);
System.out.println(a.equals(b));
System.out.println();

//一旦有变量参与计算,就会重新堆内存创建对象
String c = "java";
String d = c+"EE";
System.out.println(a==d);
System.out.println(a.equals(d));


常用构造方法:




String() 
         初始化一个新创建的 String 对象,使其表示一个空字符序列。 
String(byte[] bytes) 
        通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。 
String(byte[] bytes, String charsetName) 
         通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。 
String(char[] value) 
        分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。 
String(String original) 
     初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。
原创粉丝点击