Java编程思想 第2-10章
来源:互联网 发布:免费字体下载软件 编辑:程序博客网 时间:2024/06/06 03:34
- 前言
- 对象讨论
- 一切都是对象
- 高精度数字
- Biginteger:支持任意精度的整数
- BigDecimal:支持任何精度的定点数
- 高精度数字
- 操作符
- Random:创建Random对象时提供种子(用于随机数生成器的初始化,随机数生成器对于特定的种子值总是产生相同的随机数序列)
- Math.random():产生0和1之间,包括0,不包括1的一个double值。
- 如果将continue语句用于java的for循环,就可以跳到for循环的“更新“部分
- 初始化与清理
- 垃圾回收器
- 自适应的垃圾回收技术,包含两种做法
- 停止-复制
- 标记-清扫
- 自适应的垃圾回收技术,包含两种做法
- finalize():一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时候,才会真正回收对象占用的内存。
- 它不是通用的清理方法,真正用途——垃圾回收只与内存有关。它只用在通过某种创建对象方式以外的方式为对象分配了存储空间,即在采用了类似C语言中的做法来分配内存
- 成员初始化——java尽力保证:所有变量在使用前都能得到恰当的初始化
- 方法的局部变量,java以编译时错误的形式来贯彻这种保证
- 类的每个基本类型数据成员保证都会有一个初始值(boolean为false;引用为null;其他为0;)
- 垃圾回收器
- 访问权限控制
- 复用类
- @Override注解:当你想要覆写某个方法时,可以选择这个注解;它可以防止你在不想重载的时候意外的进行了重载(即,加上该注解后后面的方法一定是覆写,也就是说方法名和参数一定是和基类一致的)=》防止覆写的时候出错
组合和继承的选用:问自己是否需要从新类向上转型,如果需要则选择继承
- 子类重写继承的方法,不可用降低方法的访问权限,子类继承父类的访问修饰符要比父类的更大,假如我父类是protected修饰的,其子类只能是protected或者public,绝对不能是friendly或者private,当然使用private就不是继承了。
注:继承中子类抛出的异常必须是父类抛出的异常的子异常,或者子类抛出的异常要比父类抛出的异常要少
- 包括继承在内的初始化全过程(P146)
- 在A类上运行Java时,第一件事情是试图访问A.main();于是加载器开始启动并找出A类,当对他进行加载的时候:先逐步向上加载(向着基类)类,再向下逐步对static初始化,之后类加载完毕(必要的),对象可以被创建;先对基本类型默认,再调用基类构造器,实例变量按次序初始化,最后构造器其余部分被执行。
- 多态
- 多态的作用(P148):消除类型之间的耦合关系。它允许将多种类型(从同一基类导出的)视为同一种类型来处理,而同一份代码也就可以毫无差别的运行在这些不同类型之上。
- 动态绑定(后期绑定,运行时绑定):Java中除了static方法和final方法(private方法属于final方法)之外,其他所有的方法都是后期绑定
- =》编写只与基类打交道的程序代码,并且这些代码对所有的导出类都可以正确运行。
- 编写构造器的准则:用尽可能简单的方法使对象进入正常状态;如果可以的话,避免调用其它方法。
注:在构造器内唯一能够安全调用的哪些方法是基类中的final方法(private同样属于final方法)。这些方法不能被覆盖。
- 接口
- 抽象类:abstract
- 接口:interface=》implements
- 其中的域都是static final
- 方法都是抽象方法和public
- 内部类
- 作用:将类置于其他类的内部;它了解外部类,并能与之通信;使用内部类写出的方法更加优雅
- 从外部类的非静态方法之外的任意位置创建某个内部类对象,必须具体指明这个对象的类型:OuterClassName.InnerClassName
- 内部类自动拥有对其外围类的所有成员的访问权
- 生成对外部类对象的引用,使用外部类的名字后面紧跟圆点和this:DotThis.this
- 直接创建内部类的对象:必须使用外部类的对象来创建该内部类对象:DotThis.Inner dti=dn.new Inner();
- 当将内部类向上转型为其基类,尤其是一个接口的时候,所得到的只是指向基类或者接口的引用,能够很方便的隐藏实现的细节。
private内部类给类的设计者提供了一种途径,通过这种方式可以完全阻止任何依赖于类型的编码,并且完全隐藏了实现的细节
- 在一个方法里面或者在任意的作用域内定义内部类
- 理由:a实现了某类型的接口,于是可以创建并返回对其的引用;b要解决一个复杂的问题,想创建一个类来辅助你的解决方案,但是又不想这个类是公共可用的
- 这些内部类在定义的作用域之外不可用,除此之外和普通类一样
- 匿名内部类
- “;”不要忘记
- 如果基类需要一个有参数的构造器,只需简单的传递合适的参数给基类的构造器即可
- 定义一个匿名内部类,希望它使用一个在其外部定义的对象,那么编译器要求其参数引用必须是final
- 匿名类中不可能有命名构造器(因为它根本没有名字),但通过实例初始化,能够达到为匿名内部类创建一个构造器的效果
- 工厂方法
Public static GameFactory factory = new Gameactory(){ public Game getGame(){ return new Chess(); }};
- 嵌套类:内部类声明为static
- 要创建嵌套类的对象,并不需要其外围类的对象
- 不能从嵌套类的对象中访问非静态的外围类对象
- 普通的内部类不能有static数据和static字段,也不能包含嵌套类,但是嵌套类可以包含所有这些东西
- 接口内部的类是public和static的,只有嵌套类才可以,可以在内部类中实现其外围接口(例如放置测试代码)
- 它能透明的访问所有它所嵌入的外围类的所有成员
- 使用内部类的原因
- 每个内部类都能独立的继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类没有影响
- 实现多重继承
- 闭包(内部类是面向对象的闭包,可以访问外围类的成员)和回调
- 控制框架的完整实现是由单个类创建的,从而使实现的细节被封装起来;内部类可以在单一的类里面产生对同一个基类的多种导出版本,而且能够很容易的访问外围类的任意成员
- 当继承了某个外围类的时候,内部类并没有发生什么特别的变化,这两个内部类(一个是基类的,一个是子类的)是完全独立的两个实体,各自在自己的命名空间内,除非明确的继承某个内部类
- 使用局部内部类而不使用匿名内部类的理由
- 如果需要一个已命名的构造器或者需要重载构造器,选择局部内部类,匿名内部类只能用于实例初始化
- 需要不止一个该内部类的对象的时候使用局部内部类
1 0
- Java编程思想 第2-10章
- 《Java编程思想》第7-10章
- JAVA编程思想 第1,2章
- 《java编程思想-第2章》读书笔记
- JAVA编程思想:第10章 Java IO系统
- JAVA编程思想第四版第10章
- JAVA编程思想:第10章 内部类
- JAVA 编程思想第10章--内部类概要
- [学习笔记][Java编程思想]第10章:内部类
- Java编程思想读书笔记(第2-7章)
- Java编程思想:第2章 一切都是对象
- java编程思想第2章:一切都是对象
- java编程思想第1、2、3章细节总结
- Java编程思想第2章:一切都是对象
- Java编程思想读书笔记:第2章 一切都是对象
- 《Java 编程思想》-第2章 一切都是对象 笔记
- JAVA编程思想 第2章习题解答
- [学习笔记][Java编程思想]第2章:一切都是对象
- Android--service里 onstart()onStartCommand()方法的区别
- 因为网上的面试题很长时间都没更新了,有很多漏洞,所以我想总结一些面试题供大家参考(因为我也即将找工作了哈哈)!第一篇
- 二分图的最大匹配、完美匹配和匈牙利算法
- Java拓扑排序
- MarkDown Letex 编码 之 随机过程及应用(二) - E[X|Y] = E[Y E[X|Y]]证明
- Java编程思想 第2-10章
- eclipse配置tomcat8.5
- 第三方框架总结
- Cygwin下把Windows的路径转换为Linux路径
- 门面模式Facade
- form表单与ajax提交
- iOS-ReactiveCocoa常见宏
- RecyclerView进阶
- bzoj3282(lct)