【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”清单文件;
【8-21】java学习笔记03的更多相关文章
- Java学习笔记:03面向对象-接口_多态
1.类的概念 一堆具有共同的成员变量(属性)和成员方法(功能)对象的集合 2.接口的概念 接口是功能的集合,就是方法的集合 接口中只能定义方法,不能定义普通的成员变量 而且接口中的成员方法,必须是抽象 ...
- Java学习笔记 03 数组
一.数组的创建和使用 数组的创建和使用 >>创建方法1:先声明,再用new关键字分配内存(使用new关键字分配内存,整形数组中各个元素的初始值都为0) String str[]; str= ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 20145330第十周《Java学习笔记》
20145330第十周<Java学习笔记> 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- java学习笔记13--比较器(Comparable、Comparator)
java学习笔记13--比较器(Comparable.Comparator) 分类: JAVA 2013-05-20 23:20 3296人阅读 评论(0) 收藏 举报 Comparable接口的作用 ...
- java学习笔记11--集合总结
java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...
随机推荐
- js-自制轮播插件!
刚接触轮播的时候,感觉这种东西好高端,后来学习了jquery后,发现原来挺简单的,而且实现轮播也有很多形式,我用jquery自制了一个轮播插件,其实我这个说是插件,好像其实就是一个高度抽象的函数而已. ...
- Leetcode Find the Duplicate Number
最容易想到的思路是新开一个长度为n的全零list p[1~n].依次从nums里读出数据,假设读出的是4, 就将p[4]从零改成1.如果发现已经是1了,那么这个4就已经出现过了,所以他就是重复的那个数 ...
- BZOJ1853 [Scoi2010]幸运数字
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- asp.net MVC中获取当前URL/Controller/Action
一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取虚拟目录名+页面 ...
- Android成长日记-LogCat
1. Log日志级别 Log.v(tag,messag) //verbose模式,打印最详细的日志输出颜色为黑色 Log.d(tag,messag) //debug级别的日志,颜色为蓝色 Log.i( ...
- 更改codeblocks的配色方案
codeblocks默认只有一种配色方案, 不过我们可以手动添加. 在终端下输入如下命令: cd ~/.codeblocks sudo gedit default.conf 在打开的配置文件中, 找到 ...
- Mysql学习笔记(三)对表数据的增删改查。
正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...
- java8 中的时间和数据的变化
java8除了lambda表达式之外还对时间和数组这两块常用API做想应调整, Stream 有几个常用函数: store 排序 (a,b)-> a.compareTo(b) 排出来的结果是正 ...
- 利用百度开发者中心的api实现地图及周边的搜索
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- EnableViewState
EnableViewState 系统默认的值为true,在传递状态值时就包括该控件: 为false,则传递状态值时则不包括它. 可以提高网络访问的速度. 某些控件是不需要接受用户的操作或只需要接受一次 ...