java编程思想第五章初始化与清理】的更多相关文章

5.1使用构造器确保初始化: 构造器与一般方法一样,但是没有返回值,且其方法名与类名完全相同. 不接受任何参数的构造器成为默认构造器,也叫无参构造器. 5.2 方法重载: 为什么会有方法重载? 构造器是方法重载的一个重要原因,若想以多种方式创建构造器,就必须将方法进行重载,即使用有参构造. 如何区分重载方法? 方法名相同为前提,使用参数列表来区分. 注:使用返回值是不能够区分重载方法的,因为有时候你仅仅是调用方法,而不在意他的返回值. 5.3默认构造器: 没有参数的构造器,作用是创建一个默认的对…
参考https://blog.csdn.net/caroline_wendy/article/details/46844651 10&11 finalize()被调用的条件 Java1.6以下的条件: (1)类未被调用(置null)(2)调用System.gc() 1.8的条件: (1)调用System.gc().(在调用了System.gc()之后,finalize()才被执行,也就是在执行最后一个 '}'时,finalize()才被执行) //: Main.java /** * 垃圾回收 *…
七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add 在尾部增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementExc…
六.队列 排队,先进先出.除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add 在尾部增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementExce…
这是在2013年的笔记整理.现在重新拿出来,放在网上,重新总结下. 两种基本的线程实现方式 以及中断 package thread; /** * * @author zjf * @create_time 2013-12-18 * @use测试基本的两种线程的实现方式 *         测试中断 */ public class BasicThreadTest { public static void main(String[] args) { Counter c1 = new Counter()…
On Java 8中文版 英雄召集令 这是该项目的GITHUB地址:https://github.com/LingCoder/OnJava8 广招天下英雄,为开源奉献!让我们一起来完成这本书的翻译吧! 如果您在阅读本书的过程中有发现不明白或者错误的地方,请随时到项目地址发布 issue 或者 fork 项目后发布 pr 帮助译者改善!不胜感激! 书籍简介 本书原作者为 [美] Bruce Eckel,即<Java 编程思想>的作者. 本书是事实上的 <Java 编程思想>第五版.…
随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一. C++引入了构造嚣(constructor)的概念,这是一个在创建对象时被自动调用的特殊方法.Java中也采用了构造器,并额外提供了“垃圾回收器”.对于不再使用的内存资源,垃圾回收器能自动将其释放. 5.1 用构造器确保初始化 //:initialization/SimpleConstructor.java //Demonstration of a simple constructor. class Rock { Ro…
1.构造器 因为创建一个类的对象构造器就会自动执行,故初始化某些东西特好 2.方法重载 方法名相同,参数列表不同. 2.1 区分重载方法 方法重载后区别不同方法的就是方法签名 -->参数类型和个数(参数顺序不同也能区分但一般不考虑顺序) 2.2 涉及基本数据类型的重载 范围由小到大:byte > short > char > int > long > float > double 自动提升: 传入类型小于声明类型,传入值提升至与其最近的类型,该类型参数的方法被调用…
运行时类型信息使得你可以在程序运行时发现和使用类型信息.Java是如何让我们在运行时识别对象和类的信息得呢? 主要有两种方式:1.传统RTTI,他假定我们在编译期间已经知道了所有类型:2.反射,它允许我们在运行时发现和使用类的信息. 一.为什么需要RTTI 我们来看一个例子: 这是一个典型的类层次结构图,基类位于顶部,派生类向下扩展.面向对象编程中的基本目的是:让代码只操纵对基类(Shape)的引用.这样,如果添加一个新类(比如从Shape派生的Rhomboid)来扩展程序就不会影响原来代码了.…
练习1:写一个程序,打印从1到100的值 public class Print1To100{ public static void main(String args[]){ for(int i = 1 ; i <= 100 ; i++){ System.out.println("value:" + i) ; } } } 练习2:写一个程序,产生25个int类型的随机数.对于每个随机值,使用if-else语句来将其分类为大于.小于或等于紧随它而随机生成的值. public clas…
第二章  一切都是对象 尽管Java是基于C++的,但相比之下,Java是一种更纯粹的面向对象程序设计语言. c++和Java都是杂合型语言(hybird language) 用引用(reference)操作对象 类似遥控器(引用)来操作电视(对象) 在Java中你可以创建一个引用,但是没有与任何对象关联,比如: String s; 这个时候如果用则会报错.安全的做法是: 创建一个引用的同时并进行初始化 String s="1111"; 必须由你创建所有对象 New关键字的意思是给我一…
用构造器确保初始化 构造器可以确保每个对象都会得到初始化,Java毁在创建对象时自动调用构造器. 构造器采用与类名相同的名称,因此并不适合"每个方法首字母小写的风格". 构造器默认调用的是无参构造方法. 构造器没有返回值,与返回值为空(void)不同. 方法重载 方法名相同,形式参数不同的方法为重载方法. 每个重载的方法都必须有一个独一无二的参数类型列表. 参数顺序的不同也可以实现重载,但会使得程序难以维护. 如果传入的实际参数大于重载方法声明的形式参数,就必须通过类型转换来执行窄化转…
7.1组合语法 在一个类中引入多个对象,以提高代码的复用性与功能. 7.2继承语法 使用继承子类可以获得,导出类可以获得基类的成员(变量与方法). 注:这里注意权限控制,若基类中的成员为默认权限,只有在同一包下才能继承得到.protect修饰时,导出类可以获取.public修饰时,任何类都可以拿到.private修饰就属于基类自己的东西了. 为了解决导出类中调用父类同名方法出现递归问题,java提出了super关键字解决这个问题. 在继承体系中,初始化都是由内向外的,即由基类到导出类扩散的,即先…
这一章将学习散列机制是如何工作的,以及在使用散列容器时怎么样编写hashCode()和equals()方法. 一.容器分类 先上两张图 来概况完整的容器分类 再细说都为什么会有那些特性. 二.Collection的功能方法 int size();容器大小  boolean isEmpty();容器内没有元素,返回true boolean contains(Object o);容器内含有此参数,返回true Iterator<E> iterator(); 返回一个Iterator<E>…
前言 对于某些问题,如果能够并行的执行程序中的多个部分,则回变得非常方便甚至必要,这些部分要么看起来是并发执行,要么是在多处理环境下同时执行.并行编辑可以使程序执行速度得到极大提高,或者为设计某些类型的程序提供更易用的模型.当并行执行的任务彼此开始产生互相干涉时,实际的并发问题就发生了. 一.并发的多面性 并发解决的问题答题上可以分为“速度”和“设计可管理新”两种. 1.更快的执行 想要更快的执行,需要多处理器,并发是用于多处理器编程的基本工具.这是使用强有力的多处理器Web服务器的常见情况,在…
第七章 复用类 第一种方法非常直观:只需在新的类中产生现有类的对象(组合). 第二种方法更细致一些:它按照现有类的类型来创建新类(继承). 7.1 组合语法   只需将对象引用置于新类中即可. class A{} class B{ A a = new A(); }   如果想初始化这些引用,可在下列位置进行: 在定义对象的地方. 在类的构造器中. 在真正使用这些对象之前,惰性初始化. 使用实例初始化. 7.2 继承语法 当创建一个类时,总是在继承.   在继承过程中,需要先声明"新类与旧类相似&…
1.继承与组合 复用类的方法有两种:继承与组合.继承就不多说了,组合就是直接在类中new一个对象. 数组也是对象,使用数组也是组合的一种. 2.初始化基类 当创建一个导出类的对象时,该对象包含一个基类的子对象.这个子对象跟直接new一个基类的对象完全相同,唯一的区别是:一个在外部,一个被包装在导出类对象内部. 在导出类构造器中,通过调用基类构造器来执行初始化.[在Java中,所有导出类的所有构造器内部都必须调用父类的某一个构造器或所有导出类的所有构造器内部都必须调用一个其他构造器(既可以是本类构…
Alan Kay 第一个定义了面向对象的语言 1.万物皆对象 2.程序是对象的集合,他们彼此通过发送消息来调用对方. 3.每个对象都拥有由其他对象所构成的存储 4.每个对象都拥有其类型(TYpe) 5.某一特定类型的所有对象都可以接收同样的消息.   Booch提出一种更简洁的描述:     对象拥有状态(state) 行为(behavior) 和标识(identity) 每个对象都有一个接口 每个对象都属于定义了特性和行为的某个类(特性可以理解为属性的状态,行为可以理解为method) 在面向…
讲完.class,Class之后,继续. 1)泛化的Class引用 Class也能够增加泛型,增加之后会进行类型检查. 贴一下书上原话,Class<?>优于Class,尽管他们是等价的,Class<?>的优点是碰巧或疏忽使用了一个非详细的类引用.我搞不懂这个所谓非详细是什么? 后面弄懂了,事实上<?>作为通配符,就是未知的.直接写结论的话不能写个详细类型吧.作者的意思事实上就是说加了泛型的Class就是选择了非详细的版本号. 增加泛型的原因是提供编译期间的类型检查,操作…
五.List的功能方法 排除Collection已包含的方法外还增加了 boolean addAll(int index, Collection<? extends E> c);从索引位置插入参数中元素 default void replaceAll(UnaryOperator<E> operator) *1.8新增 将几何中元素替换成参数中的 举例: List<Integer> list = new ArrayList(); list.add(1); list.add…
4.1用构建器自动初始化 若某个类中有一个构建器,那么在创建对象时,Java会自动调用哪个构建器    在Java中构建器的名字必须与类名相同,这样可以保证这样一个方法惠子初始化期间自动调用: 利用构建器的自变量,我们可以为一个对象的初始化设定相应的参数.   tree t=new  Tree(12) //12英尺高的树 若Tree(int)是我们唯一的构建器,那么编译器不会允许我们以任何方式创建一个Tree对象. Java中  定义和初始化属于同一的概念       构建器属于一种较为特殊的方…
面向对象编程(oop) 1.1抽象的进步 所有编程语言的最终目的都是提供一种“抽象”方法.   难点是 在机器模型(位于“方案空间”)和实际解决问题模型(位于“问题空间”)之间,程序员必须建立起一种联系.造成程序员代码很难编写.因此造成的副作用便是一门完善的“编程方法”学科. 面向对象的程序设计在此基础上则可以利用一些工具表达问题空间中的元素.因为这种表达非常普通,所以不必受限于特定类型的问题. 将问题空间中的元素以及它们在方案空间的表示物称为“对象”(object). 编程对象的五大共同特征:…
. 匹配任意一个字符 * 表示匹配0个或多个前面这个字符 + 表示1个或多个前面这个字符 ? 表示0个或1个前面这个字符 ^ 表示一行的开始 ^[a-zA-Z] :表示开头是a-z或者A-Z [^0-9] :表示不是数字,除数字以外的 $ 表示一行的结束 \w 表示词字符[a-zA-Z0-9] \W 表示非词字符[^\w] 第七题:   package net.mindview.strings.test7; public class Test7 { public static void main…
参考https://blog.csdn.net/caroline_wendy/article/details/47271037 3 package debug; import java.util.Arrays; /** * 输出信息 * Created by wang on 15/8/4. */ public class Log { public static void v(String[] strs) { System.out.println(Arrays.toString(strs)); }…
· 大量笔记存放在Github Java文件中,请移步查看:https://github.com/iGuure/AndroidCodeHub/tree/master/Java%20pratice/Thinking%20in%20Java/Collection · 容器类: 1. Collection: List: 有顺序 ArrayList: 数组型 LinkedList: 链表型 -- Stack:栈 -- Queue: 队列 Set: 不能重复 HashSet: 无顺序,获取元素速度最快 T…
Java編程思想>中的注解代码中引入过这么一个包(com.sun.mirror),书上说的是在Jdk中有个tools.jar中,引入这个包就每这个问题了,但是笔者用的是JDK 1.8,把这个包import进来,代码还是一批报错. 实在没办法就在网上找,于是找到了apt-mirror-api-0.1.jar,它包含了以下内容: Files contained in apt-mirror-api-0.1.jar: META-INF/MANIFEST.MF META-INF/maven/com.mop…
这一章将学习散列机制是如何工作的,以及在使用散列容器时怎么样编写hashCode()和equals()方法. 一.容器分类 先上两张图 来概况完整的容器分类 再细说都为什么会有那些特性. 二.填充容器(省略):创建Collection和Map的生成器 用于测试,没什么知识点提炼. 三.Collection的功能方法 int size();容器大小  boolean isEmpty();容器内没有元素,返回true boolean contains(Object o);容器内含有此参数,返回tru…
六.反射:运行时的类信息 我们已经知道了,在编译时,编译器必须知道所有要通过RTTI来处理的类.而反射提供了一种机制——用来检查可用的方法,并返回方法名.区别就在于RTTI是处理已知类的,而反射用于处理未知类.Class类与java.lang.reflect类库一起对反射概念进行支持,该类库包含Field.Method以及Constructor(每个类都实现了Member接口).这些类型是由JVM运行时创建的,用来表示未知类种对应的成员.使用Constructor(构造函数)创建新的对象,用ge…
九.散列与散列码 HashMap使用equals()判断当前的键是否与表中存在的键相同. 正确的equals()方法需满足一下条件: 1)自反性.x.equals(x) 是true; 2)对称性.x.equalse(y) 返回true y.equals(x)也得是true; 3)传递性.x.equals(y) 返回true ,y.equals(z) 返回true , x.equals(z)返回true; 4)一致性.如果对象中用于等价比较的信息没有变,那么无论多少次 x.equals(y)返回值…
第一章 对象导论 对整书的概要. 略读. 第二章 一切都是对象 创建一个引用,指向一个对象. 安全的做法:创建一个引用的同时便进行初始化. 对象存储的地方:1)寄存器:这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.2)堆栈(堆栈是栈):位于通用RAM中,但通过堆栈指针可以从处理器那里获得直接支持.堆栈指针若向下移动,则分配新的内存:若向上移动,则释放那些内存.这是一种快速有效的分配存储方法,仅次于寄存器.创建程序时,Java系统必须知道存储在堆栈内所有项的确切生命周期,以便上…