• 【8-21】java学习笔记03


    内部类(静态内部类&非静态内部类)


     

    • 静态外部类成员方法(如main方法)不能直接访问内部类,但是可以通过外部类的方法,在其中创建内部类实例对象,间接使用;
    • 非静态内部类可以直接访问外部类的私有属性,相当于外部类的一个方法;
    • 不允许非静态内部类中有静态成员;
    • 内部类通过「外部类名.this.属性名」访问外部内的属性(与内部类属性同名时使用);
    • 静态内部类:外部类通过内部类名.成员来访问静态内部类的成员;
    • 接口内可以定义静态内部类;
    • 在外部类以外的地方创建内部类的方法:外部类对象.new 内部类构造函数;
    • Out.In in=new out.new In();
      //the same
      Out.In in;
      Out out=new Out();
      in=out.new In();
    • 创建内部类的子类时,要创建外部类的实例作为参数,来实例化内部类的子类;
    • 通过「Out.In in=new Out.内部类的构造函数」来创建静态内部类的实例;

    局部内部类


    • 定义在类方法中的类叫做局部内部类,作用域为整个方法,不需使用访问控制修饰符;
    • 由于其作用域太小,使用很少;

    匿名内部类


    • 定义方法:new 接口()or 父类构造器(){ }
    • 无类名,不能定义构造器,直接生成对象;
    • 创建匿名内部类时,马上创建匿名内部类对象,不能使用抽象类;
    • 匿名内部类访问的局部变量用final修饰,java8,自动执行effectively final,java8以前要定义为final;

    Lambda表达式


     

    •  Lambda表达式相当于一个匿名方法;
    • 组成:(形参列表)->{代码块}
    • 可省略return语句,省略时自动返回语句的值;
    • 代码块只有一个表达式时可以省略{}
    • 函数式接口:只有一个抽象方法,可有多个类方法,默认方法;
    • Lambda表达式的目标类型必须是函数式接口;
    • Lambda表达式只有一个表达式时可以使用方法引用(引用类方法,引用对象方法,引用构造器,格式为类/实例::方法)和构造器引用

    枚举类


     

    • 定义:实例有限且固定的类;
    • public enum enumclass{ allobjects;}
    • 枚举类一般属性不可变,应该修饰为 private final;
    • 为枚举类显示定义带参数的构造器;
    • switch的表达式可以是枚举类;
    • 枚举类继承自java.lang.Enum,不是Object类;

    垃圾回收


    • 强制回收的两种方式:System.gc();或者Runtime.getRuntime.gc();
    • 每个对象都有finalize方法;
    • Object类的finalize原型:protected void finalize()throwsTrowable
    • finalize方法何时执行由JVM说了算;

    others


    • JAR:java archive file,java档案文件,压缩类型,压缩机制同zip,默认包含“META-INF/MANIFEST.MF”清单文件;
  • 相关阅读:
    如何使用CslaGen生成CSLA DAL层代码
    DefaultCellStyle.NullValue与CellEndEdit
    列Readonly的问题
    IOS谓词NSPredicate
    项目展示新浪微博客户端
    KVO的概述与使用
    iOS设计模式——委托(delegate)
    ScrollView
    UIButton
    ScrollView图片的放大缩小
  • 原文地址:https://www.cnblogs.com/achievec/p/4749204.html
Copyright © 2020-2023  润新知