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


  • 静态外部类成员方法(如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”清单文件;

【8-21】java学习笔记03的更多相关文章

  1. Java学习笔记:03面向对象-接口_多态

    1.类的概念 一堆具有共同的成员变量(属性)和成员方法(功能)对象的集合 2.接口的概念 接口是功能的集合,就是方法的集合 接口中只能定义方法,不能定义普通的成员变量 而且接口中的成员方法,必须是抽象 ...

  2. Java学习笔记 03 数组

    一.数组的创建和使用 数组的创建和使用 >>创建方法1:先声明,再用new关键字分配内存(使用new关键字分配内存,整形数组中各个元素的初始值都为0) String str[]; str= ...

  3. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  4. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  5. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  6. 20145330第十周《Java学习笔记》

    20145330第十周<Java学习笔记> 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就 ...

  7. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  8. java学习笔记13--比较器(Comparable、Comparator)

    java学习笔记13--比较器(Comparable.Comparator) 分类: JAVA 2013-05-20 23:20 3296人阅读 评论(0) 收藏 举报 Comparable接口的作用 ...

  9. java学习笔记11--集合总结

    java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...

随机推荐

  1. Android Studio上面最好用的插件

    转载:http://www.jianshu.com/p/d76b60a3883d 在开发过程中,本人用的最爽的就是代码生成的插件,帮助我们自动完成大量重复简单的工作.个人也觉得代码自动生成工具是最值得 ...

  2. Leetcode #2 Add two number

    Q: You are given two linked lists representing two non-negative numbers. The digits are stored in re ...

  3. 【BZOJ-1060】时态同步 树形DP (DFS爆搜)

    1060: [ZJOI2007]时态同步 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2101  Solved: 595[Submit][Statu ...

  4. 【BZOJ-1121】激光发射器SZK 物理 + 数学 + 乱搞

    1121: [POI2008]激光发射器SZK Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 682  Solved: 565[Submit][Sta ...

  5. java web项目导入到eclipse中变成了java项目的一种情况的解决办法

    前提,我把代码上传到github上之后,在另外一台电脑上拉下之后,先报出现的是jre不对,然后换成了当前的jre,然后红色的感叹号消失了但是之前项目上那个小地球不见了,也就是说变成了java项目. - ...

  6. 树莓派利用PuTTY进行远程登录

    得到树莓派的IP:192.168.199.220 打开PuTTY: 端口为22 选择SSH 点击Open: 输入账号密码:pi/raspberry(注意,在linux下输入密码是看不见的) 如果要使用 ...

  7. Linux_LVM_磁盘扩容

    场景描述: 安装操作系统的时候,做了LVM,应用软件基本装在了“/”目录下,服务器运行一段时间后,该目录下的存储空间使用紧张,现利用LVM对其进行磁盘空间扩容. 注:安装系统的时候需要做逻辑卷管理,保 ...

  8. 洛谷P1565 牛宫

    题目描述 AP 神牛准备给自己盖一座很华丽的宫殿.于是,他看中了一块N*M 的矩形空地. 空地中每个格子都有自己的海拔高度.AP 想让他的宫殿的平均海拔在海平面之上(假设 海平面的高度是0,平均数都会 ...

  9. crawler: 爬虫的基本结构

    目前我所知道的爬虫在获取页面信息上,分为静态爬虫和动态爬虫:静态爬虫主要用于获取静态页面,获取速度一般也比较快:但是现在很多网站的页面都是采用动态页面,当我们用爬虫去获取信息的时候,页面的信息可能还没 ...

  10. Objective-C 谈谈深浅拷贝,copy和mutable copy都不是完全拷贝

    (一)字符串中的指针赋值,copy和mutablecopy NSString和NSString (1)指针赋值 肯定指向同一个字符串地址. (2)copy(和直接指向一样) NSString *str ...