您的位置:首页 > 其它

6. 高级类

2015-09-28 23:19 323 查看

一.内部类:(成员内部类、静态内部类、局部内部类、匿名内部类)

1. 成员内部类

    实现方法:
        ①MemberInner.Inner  inner1 = mi.new Inner();
            inner1.innerFun();
        ②MemberInner.Inner inner2 = new MemberInner().new Inner();
            inner2.innerFun();
    若内部类有属性和外部类同名,如何访问到外部属性?
        答案:若属性是实例属性,外部类名.this.属性名;
        若属性是静态属性,外部类名.属性名;
        public class MemberInner {
        private int a = 10;
       private static int b = 20;
 
           public class Inner{
           private int a = 30;
           private int b = 40;
           public void innerFun() {
               System.out.println("MemberInnerDemo---Inner [a="
                 + MemberInner.this.a
                 + ", b=" + MemberInner.b + "]");
        System.out.println("MemberInnerDemo---Inner [a="
                 + a
                 + ", b=" + b + "]");
            }
        }
    }
       public static void main(String[] args) {
           MemberInner.Inner inner2 = new MemberInner().new Inner();
           inner2.innerFun();
       }
执行结果为:
       MemberInnerDemo [a=10, b=20]
       MemberInnerDemo---Inner [a=30, b=40]

2. 静态内部类

    只能访问外部类中的静态属性
         如何实例化静态内部类?StaticInner.Inner inner1 = new StaticInner.Inner();

3. 局部内部类

    内部类定义在方法中
         局部内部类只能访问方法中的final局部变量

4. 匿名内部类

    经常是实现接口的时候用匿名内部类(没有类名)

       局部内部类只能在方法内部使用
       局部内部类中要想访问方法中的变量,这个变量必须是常量。

匿名异步类:



二、异常

1. 错误

       虚拟机错误
       网络错误
       程序逻辑
    常见异常:(运行时异常)RunTimeException的子类,不用try-catch-finally
        ①算数运算异常 除0
        ②空指针异常
        int [] array = null;
        System.out.println(array.length);
        ③数组下标越界异常
        int [] array = new int[10];
        System.out.println(array[20]);
        ④类型转换异常

        ⑤输入不匹配异常
            输入的时候输入字母

       


执行流程:

              


    throw是直接杀死进程,程序员没有机会去处理
    在程序中抛出异常:
         写throw new (IO等等的异常),然后在出现错误的地方按照提示
       


    选择增加throws的声明。

       


   可选项依次是包含关系,下边的包含上边的。
    声明的时候,选的是要全部包含的项
总结:程序出错时,会生成一个(或多个)异常类对象),用throw 抛生成的异常类对象
           throws指出了方法可能抛出的多个异常类对象


三、String 和StringBuffer

     String存的是字符串常量,修改值,有内存申请
     StringBuffer:申请内存,默认16,值可以修改
     具体方法看手册
          一个try块可以和多个catch块配合以处理多个异常(可以是分支或嵌套)

    函数重载



 equals是比较的值

    String的方法:



       


    String变量,改变内容的时候回重新开辟内存,效率低,因此提出了StringBuffer



注意:Java中的字符串没有\0结尾

四、集合类 

     ArrayList<E>  泛型(模板类):add remove contains
     LinkList<E>
     Map<Key, Value>:哈希表



范型:

       


集合:



哈希表:
    放入的顺序和插入的顺序无关
    不能有重复的值

    key值关键

作业:
    1. Map例子
    2. 生成四位随机码

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: