Thinking in java
文章平均质量分 80
chjttony
java软件工程师。
展开
-
《Java编程思想》学习笔记16——枚举
1.在枚举中添加方法:Java中的枚举是一种特殊的类,不但可以添加字段,构造方法,普通方法,甚至可以添加main()方法,例子如下:public enum Test{ //调用枚举构造方法创建枚举对象 WEST(“Go west”), NORTH(“Go north”), EAST(“Go east”), SOUTH(“Go south”);private String descr原创 2011-11-25 18:01:01 · 2735 阅读 · 1 评论 -
《Java编程思想》学习笔记19——并发编程(二)
1.java中的原子操作类:原子操作是指程序编译后对应于一条CPU操作指令,即原子操作是最小的不可再分指令集,编程中的原子操作是线程安全的,不需要使用进行线程同步和加锁机制来确保原子操作的线程同步。JDK5中引入了java.util.concurrent.atomic原子操作类包,提供了常用的原子类型操作数据类型,如:AtomicInteger,AtomicLong, AtomicRefe原创 2011-12-06 17:30:15 · 3762 阅读 · 0 评论 -
《Java编程思想》学习笔记10——文件和目录常用操作
1.文件目录的List操作:Java中,File类其实代表文件的路径,它既可以代表一个特定文件的文件,也可以代表一个包含多个文件的目录名称。如果File代表目录,可以使用List列出目录中文件。import java.util.regex.*;import java.io.*;import java.util.*;public class DirList{ public st原创 2011-11-06 15:40:30 · 2810 阅读 · 0 评论 -
《Java编程思想》学习笔记9——集合容器高级
1.Arrays.asList()方法产生的List是一个固定长度的数组,只支持不改变长度的操作,任何试图改变其底层数据结构长度的操作(如,增加,删除等操作)都会抛出UnsupportedOperationException异常。为了使Arrays.asList()方法产生的List集合长度可变,可以将其作为集合容器的构造方法参数,如:Set set = new HashSet(Array原创 2011-10-30 19:39:48 · 3122 阅读 · 0 评论 -
《Java编程思想》学习笔记8——泛型编程高级
1.泛型边界:Java泛型编程时,编译器忽略泛型参数的具体类型,认为使用泛型的类、方法对Object都适用,这在泛型编程中称为类型信息檫除。例如:class GenericType{ public static void main(String[] args){ System.out.println(new ArrayList().getClass()); System.ou原创 2011-09-22 17:44:56 · 11715 阅读 · 2 评论 -
《Java编程思想》学习笔记4——集合容器
1.集合中添加另一个集合的方法:(1).Collection.addAll(被添加的Collection对象)方法:如:list1.addAll(list2);(2).Collections.addAll(添加到的目标Collection对象,可变参数的集合或者对象)方法:如:Collections.addAll(list1, new Object1(), new Object2(原创 2011-08-28 16:20:37 · 3971 阅读 · 0 评论 -
《Java编程思想》学习笔记18——并发编程(一)
线程是进程中一个任务控制流序列,由于进程的创建和销毁需要销毁大量的资源,而多个线程之间可以共享进程数据,因此多线程是并发编程的基础。多核心CPU可以真正实现多个任务并行执行,单核心CPU程序其实不是真正的并行运行,而是通过时间片切换来执行,由于时间片切换频繁,使用者感觉程序是在并行运行。单核心CPU中通过时间片切换执行多线程任务时,虽然需要保存线程上下文,但是由于不会被阻塞的线程所阻塞,因此相原创 2011-12-04 16:51:38 · 6756 阅读 · 0 评论 -
《Java编程思想》学习笔记17——注解Annotation
注解Annotation又叫元数据,是JDK5中引入的一种以通用格式为程序提供配置信息的方式。使用注解Annotation可以使元数据写在程序源码中,使得代码看起来简洁,同时编译器也提供了对注解Annotation的类型检查,使得在编译期间就可以排除语法错误。1JDK内置的3中Annotation:在JDK5中,内置了3个通用目的的注解Annotation,这三个内置的注解在java.la原创 2011-11-27 18:18:10 · 6947 阅读 · 2 评论 -
《Java编程思想》学习笔记14——I/O高级
1.内存映射文件:内存映射文件允许把比内存大的文件读入内存中创建和修改,使用内存映射文件,可以像使用内存中数组一样在内存中访问整个文件,例子如下:import java.nio.*;import java.nio.channels.*;import java.io.*;pulbic class MemoryMappedFile{ //十六进制,128MB大小 static in原创 2011-11-20 18:03:35 · 2574 阅读 · 0 评论 -
《Java编程思想》学习笔记1——面向对象和JVM基础
1.java中的4种访问制权限:(1).public:最大访问控制权限,对所有的类都可见。(2).protect:同一包可见,不在同一个包的所有子类也可见。(3).default:包访问权限,即同一个包中的类可以可见。默认不显式指定访问控制权限时就是default包访问控制权限。(4).private:最严格俄访问控制权限,仅该类本身可见,对外一切类都不可以访问(反射机制可以访问)原创 2011-07-31 16:26:43 · 6302 阅读 · 3 评论 -
《Java编程思想》学习笔记3——内部类
1.java中,可以将一个类的定义放在另一个类的内部,这种叫做内部类。内部类允许编程人员将逻辑上相关的类组织在一起,并且控制内部类对其他类的可见性。2.在外部类的非静态方法中创建内部类的对象语法:外部类类名.内部类类名 对象名 = 外部类对象.new 内部类类名();如:public class Outter{ class inner{}}Outter out = ne原创 2011-08-20 17:29:11 · 3071 阅读 · 2 评论 -
《Java编程思想》学习笔记13——Java new I/O(二)
1.数据转换:使用字节缓冲区时,向字节缓冲区写入或者从字节缓冲区读取内容时,如果内容是字符类型,写入时指定字符编码集对内容进行编码,读取时指定字节编码集对内容解码。每次从字节缓冲区中读取一个字节,程序中还需要对读取的字节进行类型转换才可以使用,如果使用视图缓冲区就可以直接获取所需的数据类型,例子如下:import java.nio.*;import java.nio.channe原创 2011-11-18 17:07:38 · 2261 阅读 · 0 评论 -
《Java编程思想》学习笔记12——Java new I/O(一)
为了提高Java I/O的速度和效率,从JDK1.4开始引入了java.nio.*包,即java new I/O(NIO)。 事实上,为了利用java nio的速度和效率优势,原来的java I/O包中相关的类已经使用java nio重新实现,因此在编程中即使没有显式地使用java nio的代码,使用传统java I/O还是利用了nio的速度和效率优势。Java nio的速度提高主要在:原创 2011-11-18 15:40:26 · 4450 阅读 · 0 评论 -
《Java编程思想》学习笔记15——对象序列化
Java的对象序列化是一个轻量级的持久化过程,序列化时,可以将java对象以字节序列形式写入硬盘、数据库或者通过网络传输到另一个JVM等等,反序列化是读取序列化的文件,将其在JVM中还原为java对象的过程。1.简单的序列化和反序列化:最简单的序列化是对象实现Serializable序列化接口,这个接口是一个标记接口,不需要实现任何方法。下面的小例子简单展示java对象序列化和反序列化原创 2011-11-21 15:08:56 · 2413 阅读 · 0 评论 -
《Java编程思想》学习笔记7——泛型编程基础
一般的类和方法都是针对特定数据类型的,当写一个对多种数据类型都适用的类和方法时就需要使用泛型编程,java的泛型编程类似于C++中的模板,即一种参数化类型的编程方法,具体地说就是将和数据类型相关的信息抽象出来,主要提供通用的实现和逻辑,和数据类型相关的信息由使用时参数决定。1.泛型类/接口:(1).泛型接口:如一个提供产生指定类的接口:public interface Gerner原创 2011-09-17 16:34:43 · 3205 阅读 · 0 评论 -
《Java编程思想》学习笔记6——Java动态代理
代理是一种常用的程序设计模式,如同网络代理一样,代理是介于调用者和真正调用目标对象之间的中间对象,代理在调用真正目标对象时提供一些额外或者不同的操作,真正的对目标对象的操作还是通过代理调用目标对象来完成。 简单的代理例子如下://接口interface Interface{ void doSomething(); void somethingElse(String arg);原创 2011-09-11 16:47:19 · 3139 阅读 · 0 评论 -
《Java编程思想》学习笔记5——正则表达式量词匹配
Java正则表达式有3中量词匹配模式:1.贪婪量词:先看整个字符串是否匹配,如果没有发现匹配,则去掉最后字符串中的最后一个字符,并再次尝试,如果还是没有发现匹配,那么,再次去掉最后一个字符串的最后一个字符,整个匹配过程会一直重复直到发现一个匹配或者字符串不剩任何字符。简单量词都是贪婪量词。贪婪量词匹配时,首先将整个字符串作为匹配的对象,然后逐步从后向前移除不匹配的字符,尽可能找到最多的原创 2011-09-04 15:45:52 · 2840 阅读 · 2 评论 -
《Java编程思想》学习笔记2——对象初始化和面向对象特性
1.java类的初始化顺序:(1).在一个类中,初始化顺序由变量在类中的声明定义顺序决定,成员变量(非set方法和构造方法的初始化)的初始化发生在方法调用之前,包括构造方法。(2).静态变量在整个存储区只保留一份拷贝,本地变量不能使用静态关键字,基本类型的静态变量不需要初始化,它会根据类型获得初始化值,引用类型的静态变量默认初始化为null。静态变量的初始化发生在需要使用的时候,一旦被原创 2011-08-14 15:40:22 · 3267 阅读 · 1 评论 -
《Java编程思想》学习笔记11——Java I/O
Java中使用流来处理程序的输入和输出操作,流是一个抽象的概念,封装了程序数据于输入输出设备交换的底层细节。JavaIO中又将流分为字节流和字符流,字节流主要用于处理诸如图像,音频视频等二进制格式数据,而字符流主要用于处理文本字符等类型的输入输出。1.字节输入流InputStream输入流InputStream负责从各种数据/文件源产生输入,输入源包括:数组,字符串,文件,管道,一系列其他原创 2011-11-13 17:45:14 · 4147 阅读 · 0 评论 -
《java解惑》读书笔记2——字符串之谜
1.字符拼接:问题:程序员几乎在每天编程中都遇到和处理字符串拼接的问题,但是是否对其了解的足够深入,且看下面的程序:public static void main(String[] args) { System.out.print("H" + "a"); System.out.print('H' + 'a'); }很多人觉得输出结果应是:HaHa,但是真实的程序运行结果是:H原创 2013-12-02 13:45:49 · 2822 阅读 · 0 评论