java异常+对象类

·匿名内部类:内部类是在一个类内部还有另外一个类,匿名类是在接口和抽象类的基础上发展起来的。

如果一个类只使用一次,没有必要把它定义成单独的一个类,就可以使用匿名内部类。在接口的基础上发展起来的,例如以下代码:
interface A{
 public void fun();
}

class X{
 public void fun1(A a){
  a.fun();
 }
 public void fun2(){
  this.fun1(new A(){
   public void fun(){
    System.out.println("hello world");
   }
  });
 }
};
在一般开发中匿名内部类使用很少,一般两种情况使用,·JAVA的图形界面·Spring开发框架。

 

·包装类:
 在java中提倡一种一切皆对象的概念,这就会出现一个矛盾点。数据分为基本数据类型和引用数据类型。基本数据类型不是类。为了解决这样的矛盾,在java中针对八种基本数绝类

型设置了八个包装类,用于以类的形式表示基本数据类型。
1.int->Integer
2.char->Character
3.float->Float
4.double->Double
5.byte->Byte
6.short->Short
7.long->Long
8.boolean->Boolean
这八组包装类中分为两组:·数值型Integer Short Float Long Double-}都是Number的子类
 有6个对应的方法,各个方法都返回基本数据类型。正常情况下将一个int变为  Integer属于用类的形式表示整数,但是int本身是基本数字,可以进行加减乘除操 

 作。因为类不能进行加减乘除操作,所有提供的方法可以将类中的具体内容取出,  按照基本数据类型方式进行操作。
   ·其他类型:Character Boolean -}Object子类
·在包装类中存在装箱和拆箱的操作:
 装箱操作:基本数据类型变为包装类。
 拆箱操作:将包装类变为基本数据类型称为拆箱操作。
    在jdk1.5之前,所有数据必须进行手工装箱和拆箱操作,而且包装类本身不能进行任,何数学。但是在jdk1.5之后增加了很多新特性,例如:foreach、可变参数,自动装箱和拆箱。运算

,例如:包装类对象++是不允许的。对于包装类来讲,除了以上特性外,还有一点很重要:可以将字符串变为基本数据类型。方法public static int parserInt(String s);
但是需要注意的是字符串必须由数字组成,如果有非数字存在,则会出现代码错误;
既然可以将字符串变为int型数据,那么也应该可以变为其他数据类型。

 

异常的捕获及处理问题:
·异常产生原因及产生效果
·异常处理的标准结构
·throw和throws关键字
·自定义异常
·assert关键字(1.4加入)
为什么有异常处理?程序会在产生异常的时候退出,不能够正确的执行完。计算机发展中的两大杀手·断电:ups电源·被除数为0:
所谓的异常处理就是指:在程序发生问题是依然可以正确执行完。


异常处理格式:java中使用try...catch进行异常处理,完整格式如下:
try{
 肯能出现异常的语句
}catch(异常类 异常对象){
 异常处理
}catch(异常类 异常对象){
 异常处理
}catch(异常类 异常对象){
 异常处理
}...
finally{
 异常出口
}
finally是不管是否有异常都会执行的代码。
    对于某个程序中存在的异常,总不能一个一个的验证,找到了异常在加入catch,这样是不合适的。
·异常的处理流程: java中,每当程序中出现了异常,实际上产生了一个异常类的实例化对象。-》这种处理格式实际上非常类似于方法传参,只要参数类型匹配了,则可使用此catch处理。

实际上异常处理的最大父类是:Throwable,但是一般开发中不会使用此种方式处理,因为其下有俩个子类:
 ·Error:一般表示java的JVM的错误,与程序无关
 ·Exception:一般指程序中的错误,所以一般开发中如果要想进行异常处理,基本上都是使用此类表示。
    一般来讲程序捕获时不用Throwable,因为它表示范围太大了。在异常捕获的时候应该注意:捕获更细的异常应该放在捕获更粗的异常前面。如果为了简便,可以用Exception通吃所有程

序的异常。当然,对于实际开发来讲,如果要处理异常的话,最好分开处理。


·throws关键字:程序声明处可以使用throws关键字,使用此关键字的最大好处,就是在方法中不处理任何异常,而是交给被调用处来处理。在普通方法和主方法中都可以throws。如果主方

法throws的话,则所有 异常交给最大的头jvm处理。

·throw关键字:在程序中可以使用throw关键字人为的抛出一个异常,catch中接受。
 在异常的处理中,实际上每次产生异常的时候都是产生一个异常类的实例化对象。那么此时,也可以通过对象的方式完成。

·异常的标准格式:
 现在定义一个div()方法:1,进入方法执行完之后和之前都要有输出2,如果有异常,则交给被调用处处理:
try{
 肯能出现异常的语句
}catch(异常类 异常对象){
 异常处理
}catch(异常类 异常对象){
 异常处理
}catch(异常类 异常对象){
 异常处理
}...
finally{
 异常出口
}

·RuntimeException
之前学习过的int型数据:
public static int parseInt(String s)
                           throws NumberFormatException


public class ExceptionDemo12{
 public static void main(String args[]){
  Integer.parseInt(123);
 }
}此程序没有必要处理异常;NumberFormatException是RuntimeException的子类,也就是说RuntimeException的异常对象,虽然使用了throws,在程序中也可以不适用try{}catch(){}进行处

理。

·自定义异常:一个类只要继承了Exception类就表示一个自定义异常,当系统中提供的类不够的时候就可以这样做。
class MyException extends Exception{
 public MyException(String msg){
  super(msg);
 }
}
public class ExceptionDemo12{
 public static void main(String args[]){
  try{
   throw new MyException("aaaaaa");
  }catch(Exception e){
   e.printStackTrace();
  }
 }
}
·assert关键字
 这个关键字表示断言,就是说,当程序执行到某条语句之后,其结果肯定是固定的值。

public class ExceptionDemo14{
 public static void main(String args[]){
 int i=10;
 assert i==10;
 }
}
如果要验证程序,则需要在执行时加入参数。java -ea ExceptionDemo14

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值