打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java笔记(三 内部类、异常、编程规范)

Java笔记(三 内部类、异常、编程规范)

内部类(Outer.java)
    在一个类中定义另外一个类,这个类就叫做内部类或内置类(inner class)
    内部类和外部类分属不同的空间,都有自己的数据变量和数据方法,内部类仍然是一个独立的类
    内部类所产生的字节码的文件名:外部类$内部类.class
    内部类可以让我们将逻辑上相关的一组类组织起来,并由外部类(outer class)来控制内部类的可见性
    当我们建立一个inner class时(不管其嵌套的层次有多深),其对象就拥有了与外部类对象之间的一种关系,这是通过一个特殊的this reference形成的,使得内部类对象可以随意的访问外部类中所有的成员
    在一个方法内定义一个类的时候只能在该方法内部使用这个类
    还可将内部类的定义放置在一个语句块中
    在方法中定义的内部类,如果要访问方法中定义的本地变量或方法的参数,则变量必须被声明为final
    内部类可以声明为private或protected,还可以声明为abstract或final
    内部类可以声明为static的,那么在产生内部类的对象的时候就无需同时再存在一外部类的对象,但此时就不能再使用外部类的非static的成员变量和非static的成员方法
    非static的内部类中的成员不能声明为static的,只有在顶层类或static的内部类中才可声明static成员
 

为什么要使用内部类:
    在内部类中,可以随意的访问外部类的成员,这可以让我们更好地组织管理我们的代码,增强代码的可读性(若外部类要访问内部类的成员,需要先产生内部的的一个对象,然后利用这个对象去引用内部类的成员)
    内部类可以用于创建适配器类,适配器类是用于实现接口的类。使用内部类来实现接口,可以更好地定位与接口关联的方法在代码中的位置
    内部类的更多用法
java.lang包下有个Exception类,它有很多子类。不过虽然Exception类在java.lang包下,但它的子类不一定都在这同一个包中。Exception类类是从Throwable类派生出来的
 
 
异常处理:
    打开一个不存在的文件、网络连接中断、数组下标越界、正在加载的类文件丢失等都会引发异常
    Java中的异常类定义了程序中遇到的轻微的错误条件
    Java中的错误类定义了程序中不能恢复的严重错误条件。如内存溢出、类文件格式错误等。这一类错误由Java运行系统处理,不需要我们去处理
    Java程序在执行过程中如出现异常,会自动生成一个异常类对象,该异常类对象将被提交给Java运行时的系统,这个过程称为抛出(throw)异常
    当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码把当前异常对象交给其处理,这一过程称为捕获(catch)异常
    如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出
    try/catch/finally语句:把可能引发异常的代码放到try里,在catch语句中对异常条件进行处理。
                           若没有进行异常处理,在程序退出的时候会自动调用printStackTrace()。
                           可以写多个catch。
                           不管程序有无异常,finally语句里的代码都会执行。但当程序终止运行的时候,finally语句里的代码就不会执行(如前有System.exit(-1))
    抛出异常声明函数throws

class Excep
{
    public int division(int a,int b)
    {
         return a/b;
    }
}
class ExcepTest
{
     public static void main(String[] args)
     {
         Excep excep=new Excep();
         try
         {
             excep.division(5,0);
             System.out.println("exception");
         }
         catch(Exception e)
         {
            //System.out.println("can‘t");
            //System.out.println(e.getMessage());
            //System.out.println(e.toString());
            e.printStackTrace();//异常发生的轨迹
         }
         System.out.println("finish");
     }
}
----------------------------------------------------------------------
class Excep
{
    public int division(int a,int b) throws Exception
    {
         return a/b;
    }
}
class ExcepTest
{
     public static void main(String[] args)
     {
         Excep excep=new Excep();
         excep.division(5,0);
         System.out.println("exception");
         System.out.println("finish");
     }
}

    对于RuntimeException通常都不需要我们捕获,这类异常由Java运行系统自动抛出并自动处理。所以throws RuntimeException时,Java不会强制要求捕获,其他的会强制要求捕获
    如果父类中的方法抛出多个异常,则子类中的覆盖方法要么抛出相同的异常,要么抛出异常的子类,但不能抛出新的异常(构造方法除外)
    我们可以在方法声名时,声名一个不会抛出的异常,Java编译器就会强迫方法的使用者对异常进行处理。这种方式通常应用于abstract base class和interface中
    可以自己添加异常类,但必须从Exception中派生:
class DivisorIsMinusException extends Exception
{
           DivisorIsMinusException(String str)
           {
                    super(str);
           }
}
 
 
Java编程规范:
    package的名字由全部小写的字母组成,如:cn.mubole
    class和interface的名字由大写字母开头而其他字母都小写的单词组成,例如:Person,Exception
    class变量的名字用一个小写字母的单词开头,后面的单词都用大写字母开头,例如:index,currentImage
    class方法的名字用一个小写字母的单词开头,后面的单词都用大写字母开头,例如:run(),getBalance()
    static final变量的名字所有字母都大写,并且能表示完整含义。例如:PI,PASSWORD
    参数的名字和变量的命名规范一致
    数组应该总是用这样的方式来命名:byte[] buffer
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
黑马程序员
java编程、java学习:深刻理解Java编程的7个例子
最全的Java笔试题库之选择题篇-总共234道【1~60】
有关JAVA异常和错误(ERROR)的处理
Java Puzzlers(4)异常之谜
关于try catch finally的问题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服