Thinking in java 的学习总结
文章平均质量分 75
起晚贪黑
你这个需求 ,我就呵了个呵
展开
-
第一章.(3)基础之访问权限修饰词
private修饰词私有的意思,除了包含该成员的类之外,其他任何类都不得访问 public修饰词接口访问权限public后紧跟的成员对每个人都是可用的protected修饰词继承反问权限,处理的是继承的概念A类继承B类,A类可以反问B类中被protected修饰的成员基类的创建者只希望其派生类访问其特定的某个成员,而不希望其他类访问这个成员,就是用protected修饰词prot转载 2016-07-18 22:36:57 · 281 阅读 · 0 评论 -
第十四章 类型信息 反射 动态代理 空对象 接口和类型信息
1.反射:运行时类的信息转载 2016-09-13 11:57:54 · 491 阅读 · 0 评论 -
第十章 内部类 内部类和嵌套类
1.内部类访问外围类的成员方法内部类可以访问其外围类的方法和字段,就像他们自己的一样。当某个外围类的对象创建一个内部类对象时,此内部类对象必定会秘密地捕获一个指向那个外围类对象的引用。在访问此外围类成员的时候,就用那个引用去访问外围类的成员,内部类对象只能在与其外围类的对象相关联的时候才能被创建。编译器会处理这些细节。2.使用.this和.new.this生成一个外转载 2016-08-22 22:10:38 · 668 阅读 · 0 评论 -
第九章 接口和抽象类 接口详解
1.完全解耦一个方法 void next(Processor p),如果p仅仅是一个父类 或抽象类的话,那传入这个方法的p只能是继承晕Processor的子类或Processor类,其他的类则不能传入,而如果是Processor是一个接口的话,那传入其中的类只要实现这个接口就可以啦,这个类就可以留出空间去继承其他的类了,也可以去实现其他接口,这个方法的耦合性就低了很多。让方法接受接转载 2016-08-21 15:49:32 · 382 阅读 · 0 评论 -
第十四章 类型信息RTTI Class instanceof isInstance
1.RTTI运行时类型信息使你能够在程序运行时发现和使用(比如对象的具体类)类型信息。RTTI主要有两种形式传统的RTTI一种是在编译时知道了所有的类型信息,这属于静态绑定。另一个种是“反射机制”,允许我们在运行时发现和使用类(对象的具体类)的信息。这属于动态绑定(多态、运行时绑定)。面向对象的基本目的是:让代码只操纵对基类的引用,这样即使(从shape)派生出一个新类来也不会转载 2016-09-12 13:41:14 · 505 阅读 · 0 评论 -
第九章 接口和抽象类 基本使用
导语:接口和内部类为我们提供了一种将接口和实现分离的更加结构化的方法。Java关键字这个事实表明人们认为这些思想很重要,以至于要提供对它们的直接支持。1.抽象类第八章中的Instrument乐器类中直接调用其方法会出错。因为Instrument的目的是为实现它的子类提供一个通用的接口。目的是不同的子类以不同的方式实现此接口。通用接口建立起一种基本形式,表示所有子类的共同部分转载 2016-08-21 11:43:31 · 411 阅读 · 0 评论 -
第八章 多态总结 协变返回类型 向下转型 和运行时类型识别继承中 is-a 和 is-like-a及子类父类的方法调用(ClassCastException)
1.协变返回类型表示子类中被覆盖的方法可以返回父类方法的返回类型的某种子类类型。class Grain { public String toString() { return "Grain"; }}class Wheat extends Grain { public String toString() { return "Wheat"; }}class Mi转载 2016-08-20 12:57:24 · 473 阅读 · 0 评论 -
第十二章 异常处理 概念和基本使用
1.为什么要有异常处理Java的基本理念是结构不佳的代码不能运行。why:发现错误的理想时机是在编译阶段,余下的问题在运行期间解决,这就需要错误源能通过某种方式,把适当的信息传递给某个接受者【异常处理机制指导如何传递】——该接受者将指导如何正确处理这个问题(catch块)。2.异常处理机制是什么,作用Java使用异常来提供一致的错误报告模型,使得构件(报告模型)能够与客户端代码转载 2016-08-29 22:10:32 · 655 阅读 · 0 评论 -
第八章 多态 成员对象的清理工作。引用计数构造器内部多态行为,初始化(真)
1.清理一个对象拥有自己的成员对象,并且知道他们应该存活多久,因此一个对象可以调用其特殊方法对其成员对象进行释放。然而,如果这些成员对象存在于其他一个或多个对象共享的情况,问题就复杂了,这个时候需要使用引用计数来跟踪仍旧访问着共享对象的对象数量。下面的代码可以清楚的说明这个问题的解决办法,也是引用计数法class Shared{ private int refcount = 0;转载 2016-08-18 23:07:00 · 254 阅读 · 0 评论 -
第十章 内部类 内部类的作用、闭包、内部类继承、覆盖重写内部类、局部内部类、内部类标识符
1.为什么需要内部类内部类继承自某个类或者实现某个接口,内部类可以访问创建它的外部类的对象或参数资源。内部类能独立的实现某个接口,无论外围类是否实现了这个接口。内部类使多重继承的解决方案变得更加完善。下面的代码体现内部类实现多重继承,实现多个接口interface A{}interface B{}//实现两个接口的单一类class X implements A,B{}转载 2016-08-24 21:51:13 · 2081 阅读 · 0 评论 -
第三章.操作符
导语:在最底层,Java中的数据是通过使用操作符来操作的。1.Java操作符的定义操作符接受一个或多个参数,并生成一个新的值,可能是boolean。+、-、*、/、和赋值号(=)的用法与其他编程语言相同。几乎所有的操作符都只能操作基本类型。例外的操作符是“=”、“==”、“!=”,这些操作符能操作所有的对象String 类支持“+”和+=’。2.优先级当一个表达式中转载 2016-08-11 21:29:00 · 345 阅读 · 0 评论 -
文章标题
w导语为了防止误导,提前提示:泛型就是参数化类型(其他语言可能不叫泛型而叫参数化类型)。一般的方法类和方法只能使用具体的类型:基本类型或自定义的类。如果编写应用于多种类型的代码或方法,就会有限制。Java中的泛化机制:“可以实现类似于泛型的功能” 多态(继承)让方法或代码接受基类作为参数。多态(接口)让方法或代码接受一个接口作为参数但考虑到除了**final类不能扩展**,其他任何类都可转载 2016-09-21 07:50:27 · 309 阅读 · 0 评论 -
第十三章 字符串 格式说明符 异常补充
1.不可变StringString 类中每一个看起来会修改String值的方法都会重新创建一个全新String对象(原来创建的String对象并未改变),以包含修改后的字符串内容。public class Immutable { public static String upcase(String s){ return s.toUpperCase(); } public st转载 2016-09-02 21:25:59 · 1133 阅读 · 0 评论 -
第十二章 通过异常处理错误 基本使用
1.创建自定义异常定义自定义异常,必须从已有的异常类继承,最好选择意思相近的异常类继承。System.err 将错误发送给标准错误流,而System.out会重定向。class MyException extends Exception{ public MyException(){} public MyException(String msg){super(msg);}}p转载 2016-09-06 20:40:25 · 732 阅读 · 0 评论 -
第十三章 字符串 正则表达式
导语正则表达式是一种强大而灵活的文本处理工具。使用正则表达式,我们能以编程的方式,构造复杂的文本模式,并对输入的字符串进行搜索。一旦匹配这些模式的部分,就可以对它们进行处理。正则表达式提供了一种完全通用的方式,能够解决各种字符串处理相关的问题:匹配、选择、编辑以及验证。Java中的字符串操作集中于String、StringBuffer、StringTokenizer类。与正则表达式相比,它转载 2016-09-06 10:05:15 · 1313 阅读 · 0 评论 -
第十一章 持有对象 导读
导读:如果一个程序只包含固定数量且生命周期都是已知的对象,那么这是一个非常简单的程序。问题所在:通常程序总是根据运行时才知道的某些条件去创建对象。在此之前,不会知道所需对象的数量,甚至不知道确切的对象类型。为了解决这个问题,需要在任意时刻和任意位置创建任意数量的对象。所以就不能依靠引用来持有每一个对象,因为数量可能会很多。java有多种方式保存对象(应该是对象的引用)。例如数组,转载 2016-08-26 14:24:46 · 390 阅读 · 0 评论 -
第五章.初始化和清理 初始化可变参数列表
导语:java尽力保证所有变量在使用前都能得到恰当的初始化1.成员变量初始化局部方法中的局部变量:Java以编译时错误的形式来贯彻这种保证。如果局部变量没有初始化,那么就会得到一条错误或警告的提示。当然,编译器也可以为i赋一个默认值,但是未初始的局部变量更有可能是程序员的疏忽,所以采用默认值初始化反而会掩盖这种失误。类的数据成员(字段)是基本类型:每个数据成员都会保证有一个初始转载 2016-08-14 18:17:14 · 313 阅读 · 0 评论 -
第五章.初始化和清理 终结处理和垃圾回收
导论:将一个对象初始化后就“弃之不顾”的做法并非总是安全的。虽然java用垃圾回收器回收无用对象占用的内存资源。但也有特殊情况,假定对象并非使用new获得了一块“特殊”的区域,由于垃圾回收器只知道释放那些经由new分配的内存,所以他不知道该怎样释放这块“特殊”的内存。1.finalize()此方法出现的原因:回收除以new方法创建对象方式以外的方式分配的内存转载 2016-08-14 17:10:53 · 451 阅读 · 0 评论 -
第五章.初始化与清理 this static 构造器
1.导读不要在代码中调用gc,因为没调用一次gc,java虚拟机就会在不定的时间执行一遍清理工作,而在这个过程中,所有的线程都必须暂停,等待清理线程执行完毕。java中也向c++一样引入了构造器的概念,并额外提供了“垃圾回收器”。对于不再使用的内存资源卖垃圾回收器能将其自动释放。2.构造器java 用构造器来保证对象的初始化。构造器的命名与类名相同。当new一个对象时,将会转载 2016-08-14 15:23:43 · 324 阅读 · 0 评论 -
第七章:复用类(继承和组合)向上转型Override代理、构造器和清理
导读:复用类包含组合和继承两种方式,多用组合,少用继承组合:新的类由现有对象所组成,包含现有类的对象,这种方式仅是复用了现有程序代码中的功能,而非它的形式。继承:按照父类的类型来创建新类(子类)。子类无需改变父类的形式,只需要扩展功能方法就可以。编译器可以处理好子类和父类的关系。继承是面向对象程序设计的基石之一。1.组合将先有类的对象置于新类中就可实现组合。基本类型可以直接转载 2016-08-15 22:23:52 · 367 阅读 · 0 评论 -
第八章 多态 多态的优点与作用 和缺陷
1.可扩展性多态是一项让程序员“将改变的事物和未变的事物分离开来的重要技术”。改变的事物可能是添加了新的子类或父类和子类添加了新的方法,未变的事物可能是对基类的调用如 tune(Instrument i)方法调用,传入i的可能是个子类,而且可能会不断继承而产生新的子类但都不能影响这个方法,这个方法完全忽略周围的改变,这就是改变的事物和未变的事物分离开来。一个良好的OOP系统都遵循t转载 2016-08-18 21:05:10 · 568 阅读 · 0 评论 -
第一章.对象导论之基本概念[面向对象/问题空间/解空间]
1.什么是语言?如汇编,c,c++ ,java等语言是一种我们交流所遵守的协定,我们遵守某种协定以达到互相交流的目的,如果我们所遵守的协定是不同的,那么是无法完成交流的。原创 2016-07-17 11:46:48 · 3356 阅读 · 0 评论 -
第一章.对象导论之方法的重写和重载
1.重写重写肯定有继承的存在,即子类重新编写父类的方法。2.重载重载跟重写不同,重载是同名的方法因为有不同类型或不同数量的形式参数,亦或有不同的方法类型。原创 2016-07-24 18:32:00 · 187 阅读 · 0 评论 -
第一章.对象导论之 java与Internet
1.导读尽管java对于传统的单机程序设计问题非常有用,但同样重要的是,它解决了在万维网上的程序设计问题 。2.客户/服务器计算技术客户/服务器的核心思想是:服务器具有一个中央信息存储池,用来存储某种数据,通常存于数据库中,而你可以根据需要将他分发给某些人员或机器集群。客户/服务器的概念的关键在于信息存储池的位置集中于中央,使得它可以被修改,并且使这些修改将被传播给信息消费者。转载 2016-07-27 20:23:13 · 601 阅读 · 0 评论 -
第一章.对象导论之异常处理
异常处理:处理错误大多数错误处理机制都依赖于程序员自身的警惕性,这种警惕性是依靠人们的约定俗成,而不是编程语言,如果程序员警惕性不高,这些异常就得不到处理在java中,异常直接置于编程语言中,当程序员编写错误的违反约定的代码时,java就会自动抛出错误的提示或警告。异常是一种对象,它从出错点被“抛出”。【throw new Exception;】,抛出来的是一个Exception对象捕转载 2016-07-24 19:27:50 · 342 阅读 · 0 评论 -
第一章.对象导论之代码编写遵循原则
1.高内聚?一个软件构件(如对象)的各个方面“组合”的很好将相同功能的方法封装在一起,如封装在一个类中。你不能在打印机的类中实现榨果汁的功能原创 2016-07-24 18:27:25 · 198 阅读 · 0 评论 -
第一章.(1)类 对象和接口
1.类是什么?类是具有相同特性(数据元素.状态)和行为(功能.方法)的对象的集合,一个类就是一个数据类型,和int等是一样的。每一个对象都属于定义了特性和行为的某个特定的类类的关键字是class。所以java里看见有class关键字的就是一个类创建类是面向对象程序设计的基本概念之一,也是其组成部分2.类的作用是什么?程序员通过自定义类来适应问题,而不用再被迫只能使用现有的用转载 2016-07-18 20:21:37 · 369 阅读 · 0 评论 -
第一章.(2)对象导论之访问控制权限修饰词的铺垫[小知识点]
1.【重构】访问控制(或隐藏具体实现)与“与最初的实现并不恰当”有关优秀的作者对其著作的某些部分直至重新编写的时候才变得更完美,编写代码也一样。对代码进行反复优化重写,用更好的方式去实现相同的功能的过程就是重构重构即重写代码,以使它更可读,更易理解,并因此更具有可维护性2.客户端程序员和服务器端程序员服务器端程序员:编写类库的程序员客户端程序员:使用类库的程序员3转载 2016-07-24 11:17:20 · 271 阅读 · 0 评论 -
第二章.一切皆是对象之对象创建存储过程(引用)
导读:java 是基于C++的,但相比之下,java是一种更“纯粹”的面向对象程序设计语言。C++和Java都是混合/杂合型语言。杂合型语言允许多种编程风格java假设我们只进行面向对象的程序设计。所以 一切皆是对象。1.引用每种编程语言都有自己的操纵内存中元素的方式,如c和c++中的指针。在java中,一切皆是对象,操纵的标识符实际上是对象的一个“引用”,如一个遥控器,一个遥转载 2016-07-27 22:34:37 · 666 阅读 · 0 评论 -
第二章.一切都是对象之基本类型【主数据类型】数组
1.概念:在程序设计中经常用到的一系列类型,他们被特殊对待。2.为什么会有基本类型,存储位置因为用new将对象存储在“堆”里,所以用new创建一个对象——特别小的/简单的变量,往往不是很有效。因此,java采用与c和c++相同的方法。不用new创建变量,而是创建一个“并非是引用”的“自动”变量。这个变量直接存储“值”,并置于堆栈中,因此更高效。3.主数据类型的大小和名称转载 2016-07-29 21:38:43 · 440 阅读 · 0 评论 -
第八章.多态 什么是多态
导语输入错误的数字,如何得到正确的结果呢 方法调用tune(Instruments i) tune(wind)多态通过分离做什么和怎么做,从另一个角度讲接口和实现分离开来。接口就是公开调用的方法,而实现就是具体的方法,父类(或抽象类,或inteface接口)来声明做什么,子类来实现怎么做。封装 通过合并特征和行为来创建新的数据类型。实现隐藏则通过将细节“私有化”把接口和实现分离开来。转载 2016-08-18 19:27:11 · 485 阅读 · 0 评论 -
第十一章持有对象之容器的使用
1.添加一组元素(ArrayList.....子类的简单使用)public class AddingGroup { public static void main(String[] args) { Collection collection = new ArrayList(Arrays.asList(1,2,3,4,5)); Integer[] moreInt = {6转载 2016-08-28 13:35:06 · 607 阅读 · 0 评论 -
第七章.复用类 初始化和类的加载 总结
1.java的类加载过程每个类编译代码都存在于一个独立的文件中,该文件只在需要使用该程序代码的时候才会被加载。一般来说“类的代码在初次使用时才加载”,通常是指加载发生于创建类的第一个对象时,当访问static域或static方法时,该代码文件也会被加载。加载过程:类加载器开始启动并找出子类中的编译代码,在.class文件中,加载过程中发现他有一个父类,由extends关键字得知,于是进行加转载 2016-08-16 21:53:29 · 270 阅读 · 0 评论 -
第七章.final关键字和所说的接口
导语:java中的final关键字的含义存在着细微的区别,但通常指“这是不可改变的”.不想改变可能处于两种理由:设计和效率,两者相差甚远,所以可能被误用 final可以修饰 数据、方法和类。1.final 关键字修饰的数据有时数据恒定不变是很重要的。一个永不改变的编译时变量一个在运行时被初始化的值而不希望它被改变。编译时常量必须是基本数据类型,并且以final转载 2016-08-16 21:14:50 · 607 阅读 · 0 评论 -
第四章.控制执行流程
1.导语程序必须在执行过程中控制它的世界,并作出选择。在java中,要使用执行控制语句来作出选择。java使用了C的所有的流程控制语句,关键字如 if-else、while、do-while、for、return、break以及选择语句switch,java并不支持got语句,它是解决某些特殊问题最便利的方法。在java中,仍然可以进行类似goto那样的跳转,但有很多的限制。2.tru转载 2016-07-31 21:04:22 · 403 阅读 · 0 评论 -
第二章.一切都是对象之注释和嵌入式文档javaDoc
1.java中注释的两种风格以“/*”开头,以“/*”结束,多行注释 /* * method:main() */“//”单行注释 //输出 System.out.println();以“/**”开头,以“*/”结束,这种方式可以用来产生注释文档。 /** * * @param args */2.为什么要有注释文档。如果文档是与代码转载 2016-07-31 17:03:11 · 553 阅读 · 0 评论 -
第二章.一切都是对象之作用域、方法、参数、返回值、新类型
1.作用域作用域决定了在其内定义的变量的可见性和生命周期。在java、C、C++中,作用域有花括号的位置决定{}在作用域定义的变量只可用于作用域结束之前。一个作用域之内的一个类型的变量只能有一个名字,名字不能重复。如:{ int x = 12; { int x = 96;//编译器会抛出异常转载 2016-07-31 11:32:29 · 718 阅读 · 0 评论 -
第二章.一切都是对象之作用域、方法、参数、返回值、新类型
1.作用域作用域决定了在其内定义的变量的可见性和生命周期。在java、C、C++中,作用域有花括号的位置决定{}在作用域定义的变量只可用于作用域结束之前。一个作用域之内的一个类型的变量只能有一个名字,名字不能重复。如:{ int x = 12; { int x = 96;//编译器会抛出异常转载 2016-07-31 11:30:52 · 613 阅读 · 0 评论 -
二进制的位数,字节、字符
二进制位数,也就是表达一个其他类型的数所需要的二进制数有几个,确定整数二进制表示中第一个1 的出现位置。例如: 2的二进制为 10,占用2个二进制位 3的二进制为 11,占用2个二进制位 4的二进制为 100,占用3个二进制位再例如,int型是32位,什么意思呢,也就是所它最大可以占32个2进制位 也就是100000000000000000000000000000,它的最高位在第3原创 2016-08-11 21:23:02 · 33067 阅读 · 1 评论