
Java编程思想
文章平均质量分 90
Java编程思想
花开不合阳春暮
博客中只是一些之前学习的笔记,现在个人改在本地记录笔记,优快云博客不在维护了!!!
展开
-
Java编程思想笔记——类型信息
运行时类型信息使得你可以在程序运行时发现和使用类型信息。 运行时识别对象和类的信息:一种是传统的RTTI,另一种是反射机制为什么需要RTTI多态的类层次结构,最通用的类型泛型是基类Shape,而派生类有Circle,Square和Triangle。 Shape接口动态绑定draw方法,目的是让客户端程序员使用泛化的Shape引用来调用draw。draw在所有派生类里都会被覆盖,并且...原创 2018-04-27 09:09:06 · 599 阅读 · 2 评论 -
Java编程思想笔记——Java I/O系统1
I/O源端与之通信的接收端:文件、控制台、网络链接等。 通信方式:顺序、随机存取、缓冲、二进制、按字符、按行、按字等。File类File(文件)既能代表一个特定文件名称,又能代表一个目录下的一组文件的名称。如果是文件集,可以对此集合调用list()方法,返回一个字符数组。目录列表器// {Args: "D.*\.java"}public class DirList { ...原创 2018-05-18 14:32:23 · 466 阅读 · 0 评论 -
Java编程思想笔记——容器深入研究2
理解Map标准Java类库中包含了Map的几种基本实现,包括:HashMap、TreeMap、LinkedHashMap、WeakHashMap、ConcurrentHashMap、IdentityHashMap。它们都有同样的基本接口Map,但行为特征各不相同,表现在效率、键值对的保存及呈现次序、对象的保存周期、映射表如何让在多线程程序中工作和判定键等价的策略等方面。public cla...原创 2018-05-14 11:11:24 · 363 阅读 · 0 评论 -
Java编程思想笔记——Java I/O系统2
I/O流的典型使用方式缓冲输入文件使用以String或File对象作为文件名的FileInputReader。为了提高速度,对文件进行缓冲,将所产生的引用传给一个BufferedReader构造器。public class BufferedInputFile { public static String read(String filename) throws IOExce...原创 2018-05-21 09:27:23 · 168 阅读 · 0 评论 -
Java编程思想笔记——Java I/O系统3
新IOJDK 1.4的java.nio.*包中引入了新的IO类库,其目的在于提高速度。实际上,旧的IO包已经使用nio重新实现过,以便充分利用这种速度提高。 速度提高源自于所使用的结构更接近于操作系统执行IO的方式:通道和缓冲器。 唯一直接与通道交互的缓冲器是ByteBuffer,可以存储未加工字节的缓冲器。java.nio.ByteBuffer是相当基础的类:通过稿子分配多少存储空间来创...原创 2018-05-21 14:42:43 · 290 阅读 · 0 评论 -
Java编程思想笔记——容器深入研究3
对Set的选择public class SetPerformance { static List<Test<Set<Integer>>> tests = new ArrayList<Test<Set<Integer>>>();原创 2018-05-15 13:46:34 · 318 阅读 · 0 评论 -
Java编程思想笔记——Java I/O系统4
压缩Java IO类库中的类支持读写压缩格式的数据流。 这些类属于InputStream和OutputStream继承层次结构的一部分。因为压缩类库是按字节方式而不是字符方式处理的。 尽管存在多种压缩算法,但是Zip和GZIP是最常用的。用GZIP进行简单压缩如果相对单一数据流进行压缩,GZIP接口是比较合适的选择:// {Args: GZIPcompress.java}...原创 2018-05-22 12:40:39 · 279 阅读 · 0 评论 -
Java编程思想笔记——Java I/O系统5
XML对象序列化的一个重要限制是它只是Java的解决方案:只有Java程序才能反序列化这种对象。一种更具有互操作性的解决方案是将数据转换为XML格式,这样可以使其被各种各样的平台和语言使用。 开源XOM类库,Person类有一个getXML()方法,使用XOM来产生被转换过的XML的Element对象的Person数据。还有一个构造器,接受Element并从中抽取恰当的Person数据:...原创 2018-05-22 13:46:55 · 170 阅读 · 0 评论 -
Java编程思想笔记——枚举类型
关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用。基本enum特性values()返回enum实例的数组,而且保持声明的顺序:enum Shrubbery {GROUND, CRAWLING, HANGING}public class EnumClass { public static void main(Strin...原创 2018-05-23 15:29:39 · 786 阅读 · 0 评论 -
Java编程思想笔记——并发1
并发的多面性更快的执行一台多处理器的机器,可以在处理器之间分布多个任务,从而可以极大地提高吞吐量。 并发通常是提高运行在单处理器上的程序的性能。 这好像有些违背直觉。在但处理器上运行并发程序开销确实应该比该程序的所有部分都顺序执行的开销大,因为其中增加了所闻上下文切换的代价。表面上看,将程序的所有部分当作单个任务运行好像是开销更小,并且节省上下文代价。 使这个问题变得不同的是线程阻塞...原创 2018-05-28 13:57:54 · 182 阅读 · 0 评论 -
Java编程思想笔记——并发2
共享受限资源不正确地访问资源EvenChecker,消费者任务。 为了将EvenChecker与要实验的各种类型的生成器解耦,将创建一个名为IntGenerator的抽象类:public abstract class IntGenerator { private volatile boolean canceled = false; public abstract i...原创 2018-05-29 15:59:05 · 303 阅读 · 0 评论 -
Java编程思想笔记——并发3
终结任务原创 2018-05-31 15:32:48 · 343 阅读 · 0 评论 -
Java编程思想笔记——并发4
死锁一个任务之间相互等待的连续循环,没有那个线程能继续,称之为死锁。哲学家就餐:public class Chopstick { private boolean taken = false; public synchronized void take() throws InterruptedException { while (taken) ...原创 2018-06-01 14:08:52 · 311 阅读 · 0 评论 -
Java编程思想笔记——并发5
仿真银行出纳员仿真对象随机地出现,并且要求由数量有限的服务器提供随机数量的服务时间。// Args:5class Customer { private final int serviceTime; public Customer(int tm) { serviceTime = tm; } public int getServiceT...原创 2018-06-01 14:33:54 · 268 阅读 · 0 评论 -
Java编程思想笔记——容器深入研究1
完整的容器分类法Java SE5新添加了: 1.Queue接口(LinkedList已经为实现该接口做了修改)及其实现PriorityQueue和各种风格的BlockingQueue。 2.ConcurrentMap接口及其实现ConcurrentHashMap,用于多线程机制 3.CopyOnWriteArrayList和CopyOnWriteArraySet,用于多线程机制 4...原创 2018-05-11 08:22:39 · 1808 阅读 · 0 评论 -
Java编程思想笔记——字符串
字符串操作是计算机程序设计中最常见的行为。不可变StringString对象是不可变的。查看JDK文档就会发现,String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串的内容,而最初的String对象则丝毫未动:public class Immotable { public static String up...原创 2018-04-26 09:13:17 · 445 阅读 · 0 评论 -
Java编程思想笔记——对象入门
抽象过程所有编程语言的最终目的都是提供一种“抽象”方法。汇编语言汇编语言是对基础机器的少量抽象。“命令式”语言“命令式”语言(如FORTRAN,BASIC 和 C)是对汇编语言的一种抽象。但抽象原理依然要求我们着重考虑计算机的结构,而非考虑问题本身的结构。为要解决的问题制作模型世界的某些特定视图LISP:所有问题最终都是列表 APL:所有问题最终都是算法形式的 PROLOG :所有问题都归纳为决原创 2017-12-27 15:27:28 · 282 阅读 · 0 评论 -
Java编程思想笔记——一切都是对象
用引用操纵对象“引用”(reference),遥控器(引用)操纵电视机(对象)。同时有一个引用,并不需要有一个对象与它关联。操作一个词或句子,则可以创建一个String引用:String s;但这里创建的只是引用,并不是对象。如果向s发送消息,则会发生运行时错误,因为s并没有和任何对象关联。正确的做法是创建一个引用的同时并且初始化。原创 2017-12-27 17:38:12 · 365 阅读 · 0 评论 -
Java编程思想笔记——操作符
在最底层,java中的数据是通过使用操作符来操作的。 几乎所有操作符都只能操作基本类型。例外的操作符“=”“==”“!=”能操作所有对象。原创 2017-12-28 14:52:06 · 250 阅读 · 0 评论 -
Java编程思想笔记——多态
在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三张基本特征。多态:分离,做什么和怎么做,消除类型间的耦合性 封装:合并,创造新的数据类型 实现隐藏:分离,接口和实现,将细节私有化继承允许将对象视为它自己本身的类型或其基类来加以处理,这种能力极为重要,因为它允许将多种类型视为同一类型处理,而同一份代码也就可以毫无差别地运行在不同类型之上。多态方法调用允许一种类型表现出与其他相原创 2018-01-15 13:04:05 · 277 阅读 · 0 评论 -
Java编程思想笔记——复用类
组合在新类中产生现有类的对象。每个非基础类型的对象都有一个toString方法。 编译器并不是简单的为每一个引用都创建默认对象。如果想初始化这些引用,可以在下列位置进行: 1.定义对象的地方 2.类的构造器中 3.在要使用这些对象之前(惰性初始化) 4.使用实例初始化public class Soap { private String s; Soap(){原创 2018-01-10 11:48:01 · 238 阅读 · 0 评论 -
Java编程思想笔记——初始化与清理
用构造器确保初始化构造器(constructor),在Java中,通过提供构造器,类的设计者可确保每个对象都会得到初始化,类具有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造器。 调用构造器是编译器的责任。Java中构造器采用和类相同的名称。public class Rock { Rock(){ System.out.println("Rock原创 2018-01-02 21:47:27 · 326 阅读 · 0 评论 -
Java编程思想笔记——初始化与清理2
成员初始化所有变量在使用前都能得到恰当的初始化。 对于方法的局部变量,Java以编译时错误的形式来贯彻这种保证。 类的数据成员是基础类型,情况就会变得有些不同。因为类的每一个基础类型成员保证都有一个初始值。 在类里定义一个对象引用时,如果不将其初始化,此引用就会获得一个特殊值null。 甚至可以通过某个方法来提供初值,方法也可以带有参数,但是参数必须是被初始化了的。public原创 2018-01-05 15:46:58 · 247 阅读 · 0 评论 -
Java编程思想笔记——访问权限控制
重构既是重写代码,已使得它更可读、更易理解,并因此而更具可维护性(消费者(客户端程序员)又希望保持不变)。 如何把变动的事物与保持不变的事物区分开来?为什么控制访问权限? 1.使用用户不触碰不该触碰的部分。 2.更改内部实现,不影响客户端程序员包:库单元package,将构件捆绑到一个内聚的类库单元中。包内包含一组类,他们在单一的名字空间下被组织在一起。单一文件位于未命名包,原创 2018-01-08 22:09:57 · 259 阅读 · 0 评论 -
Java编程思想笔记——接口
抽象类和抽象方法抽象方法:abstract void f();包含抽象方法的类叫做抽象类。如果一个类包含抽象方法,该类必须内限定为抽象的。抽象类创建对象是不安全的,编译器不允许其实例化。 如果从一个抽象类继承,并想创建该新类的对象,那么就必须为基类中的所有抽象方法提供方法定义。如果不这么做(可以选择不做),那么导出类便也是抽象类,且编译器将会强制我们使用abstract关键字来限定这个类。 ...原创 2018-03-19 17:49:32 · 551 阅读 · 0 评论 -
Java编程思想笔记——内部类
内部类:可以将一个类的定义放在另一个类的内部定义。创建内部类public class Parcel1 { class Contents { private int i = 11; public int value() { return i; } } class Destination { private Str...原创 2018-04-02 22:14:50 · 228 阅读 · 0 评论 -
Java编程思想笔记——持有对象
Java有多种方式保存对象(对象的引用):数组,Java实用类库还提供了完整的容器类:list、set、map等集合类,但由于Java的类库中使用了Collection这个名字来指代该类库的一个特殊子集,所以使用范围更广的术语容器称呼他们。 泛型和类型安全的容器Java SE5之前的容器允许向容器插入不正确的类型。现在,可以把ArrayList当作可以自动扩充自身尺寸的数组来看待。...原创 2018-04-16 17:43:49 · 380 阅读 · 0 评论 -
Java编程思想笔记——通过异常处理错误2
Java标准异常异常的基本概念是用名称代表发生的问题,并且异常的名称应该可以望文知意。异常并非全是在java.lang包里定义的,有些异常是用来支持util、net、io这样的程序包,这些异常可以通过他们完整的名称或从他们的父类中看出端倪。比如,所有的输出/输入异常都是从java.io.IOException继承来的。RuntimeExceptionNullPointerExcep...原创 2018-04-23 21:17:18 · 272 阅读 · 0 评论 -
Java编程思想笔记——数组
数组为什么特殊数组与其他种类的容器之间的区别有三方面: 1.效率,数组是效率最高的存储和随机访问对象引用序列的方式。数组就是一个简单线性序列,使得元素访问非常快速。代价就是数组对象的大小被固定,并且在生命周期内不可改变。 2.类型,泛型之前,其他容器类在处理对象时,都将视作没有任何类型,也就是说,这些对象都将当作Object处理。数组之所以优于泛型之前的容器,就是可以创建一个持有具体类型的...原创 2018-05-09 16:53:03 · 541 阅读 · 0 评论 -
Java编程思想笔记——并发6
性能调优比较各类互斥技术abstract class Incrementable { protected long counter = 0; public abstract void increment();}class SynchronizingTest extends Incrementable { public synchronized void in...原创 2018-06-01 17:27:36 · 277 阅读 · 0 评论