
JDK类库学习
极客若海
这个作者很懒,什么都没留下…
展开
-
Java I/O的两个设计模式
Java I/O库的两个设计模式: 点击打开链接 Java的I/O库总体设计是符合装饰者模式(Decorator)跟适配器模式(Adapter)的。如前所述,这个库中处理流的类叫做流类。引子里所谈到的 FileInputStream,FileOutputStream,DataInputStream及DataOutputStream都是流处理器的例子。 1 装饰者模式:在由 In转载 2013-08-19 14:26:17 · 1090 阅读 · 0 评论 -
hashCode方法与HashSet类
如果想查找一个集合中是否包含有某个对象,大概的程序代码怎样写呢?当发现某个元素与要查找的对对象进行equals方法比较的结果相等时,则停止继续查找并返回肯定的信息,否则返回否定的信息。如果是一个集合中有很多元素,譬如有一万个元素,并且没有包含要查找的对象时,则意味着你的程序需要从该集合中取出一万个元素进行啄一的比较才能得到结论,有人发明了一种hashCode算法,来提高查找的效率,这种方式将集合分转载 2013-12-31 12:40:52 · 1056 阅读 · 0 评论 -
Arrays类的asList方法详解
/** * java.utils这个工具包下有一个Arrays类,它有一个静态方法asList(T... a),它接受可变参数a,返回List,完整方法声明如下: * public static List asList(T... a) * @author yajun */public class AsListTest { @Test public void testAsList原创 2014-01-02 15:55:02 · 2029 阅读 · 0 评论 -
Properties工具类练习
知道Properties很长时间了,但一直没有练习过,有一次听张孝祥老师说Properties的本质是Map,感觉说到了本质,对properties理解的对以前透彻了。今天因为要优化if-else,练习了一下,代码如下:public class PropertiesUtils { /** * 把key-value对存放到properties文件中,缺点是对中午支持不好 */ pu原创 2014-01-01 20:26:40 · 936 阅读 · 0 评论 -
用Java实现简单的文件上传服务器和客户端
文件上传服务器端:/** * 使用TCP协议实现上传功能的服务器端 * 思路: * 新建ServerSocket * 等待客户端连接 * 连接上后开启子线程,把连接获取的Socket传给子线程 * 循环进行 * @author yajun * */public class UploadServer { public static void main(String[]原创 2014-01-02 20:32:05 · 8039 阅读 · 0 评论 -
IO流的关闭问题
流的关闭是为了释放流调用的底层的系统资源。而流本身是通过系统回收处理掉的。在流的关闭上; 比如 BufferedReader buf = new BufferedReader(new FileReader(".....")); 这个关闭掉 buf,因为FileReader没有对象实例 BufferedRe原创 2014-01-02 20:42:49 · 2136 阅读 · 1 评论 -
三种方法校验QQ号码,正则表达式代码最好
/** * 分别用String类方法和正则表达式校验QQ号码是否合法 * QQ号码要求: * 6-10位,必须是数字、开头不能为0 * @author yajun * */public class QQCheck { String[] qqNums=new String[5]; /** * 组合字符串方法来校验QQ号码的合法性 */ private String原创 2014-01-03 09:57:40 · 6479 阅读 · 0 评论 -
生成10个1-20范围内的不重复的随机数
/** * 生成10个1-20范围内的不重复的随机数 * @author yajun */public class UnRepeatRandom {private void genUnRepeatRandom(){Random ran=new Random();Set set=new HashSet();while(set.size()set.add(r原创 2014-01-03 09:59:00 · 5253 阅读 · 0 评论 -
IO流之复制文件夹中及其子目录中的文件
直接上代码:/** * 目标:复制src下文件到srcBak文件夹下 * 思路: * 1.找出src下所有文件,把绝对路径与文件名放到一个元素类型为String的List中 * 2.将src替换为srcBak,得到目标文件的绝对路径和文件名 * 3.进行复制 * @author yajun * */public class FileCopy { private List原创 2013-12-31 21:50:26 · 1285 阅读 · 0 评论 -
IO流小知识——创建级联目录mkdirs()
/** * 疑问:java是否可以创建级联目录 * @author yajun */public class DirTest { @Test public void creatDir(){ File dir=new File("D:\\c\\b\\c"); dir.mkdirs(); Assert.assertEquals(true, dir.exists()); }原创 2013-12-31 19:23:10 · 3985 阅读 · 0 评论 -
java增强之泛型练习2:泛型DAO、通过反射获取泛型参数
//任务6:利用反射获取方法的泛型参数、泛型异常、泛型返回值 public void applyList(List list) throws Exception{ /** * 思路: * 1.获取方法 * 2.获取方法的泛型参数 */ Method method = GenericTest.class.getMethod("applyList", List.cl原创 2013-12-31 11:58:29 · 965 阅读 · 0 评论 -
Java IO 中的设计模式
引言:单纯学设计模式和Java类库的学习效果都不会很好。设计模式和Java类库的关系就好像九阴真经和北斗阵法的关系,一个是练功原理,一个是用原理实现的招式,郭靖在轩辕台上忘记危险而专注思考就是领悟到了其中的两者结合而来的妙处。设计模式这样的东西(增加开发时间和成本,提高可扩展性和可维护性),只有运用在基础类库中才能体现出他的价值,设计模式是用来打基础的,现实中的项目如果用设计模式难免会出现费力转载 2013-08-19 12:58:03 · 2244 阅读 · 2 评论 -
HashMap实现原理
1.HashMap的数据结构 数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法—— 拉链法,我们可以理解为“链表的数组” ,如图: 从上图我们可以发现哈希表是由数组转载 2013-08-23 17:06:13 · 596 阅读 · 0 评论 -
mysql驱动源码分析
注: 本系列文章使用JDK1.5 数据库驱动版本 mysql-connector-java-5.1.8b JAVA连接数据库是其众多功能中的一部分,主要有两种方式连接DataBase: 一种是采用JDBC-ODBC桥,另一种则是称之为纯驱动连接DataBase,第一种方式在大型项目中基本上不再使用,本系列文章主要分析纯驱动源码。对于初学JAVA者,甚至那些使用JAVA做过几年转载 2013-08-23 12:22:28 · 1134 阅读 · 0 评论 -
Java序列化Serializable和ObjectOutputStream
序列化将一个对象存放到某种类型的永久存储器上称为保持。如果一个对象可以被存放到磁盘上,那么这个对象就被称为可保持的。java.io.Serializable接口没有任何方法,它只作为一个“标记者”,用来表明实现了这个接口的类可以考虑序列化。类中没有实现Serializable的对象不能保持或恢复它们的状态。比如若要用ObjectOutputStream写入一个对象,那么这个对象必须实现Se原创 2013-08-25 19:04:08 · 1576 阅读 · 0 评论 -
hashcode
点击打开链接今天下午研究了半天hashcode()和equals()方法,终于有了一点点的明白,写下来与大家分享(zhaoxudong 2008.10.23晚21.36)。 1. 首先equals()和hashcode()这两个方法都是从object类中继承过来的。 equals()方法在object类中定义如下: public boolean equals(Object转载 2013-08-25 18:43:09 · 627 阅读 · 0 评论 -
针对java.net包的编程题
利用URL下载网络资源(类似复制,只不过从网上复制到自己电脑上)思路:用URL的openStream()方法获取URL的InputStream,从InputSteam中读取数据到字节数组中,把字节数组中的数据写入到文件中,循环进行读写操作,直到读完InputStream中的数据。利用URL和Thread实现多线程下载思路:获取文件名和大小,根据文件名和大小新建一个空白文件,按照文件原创 2013-08-28 00:10:16 · 944 阅读 · 0 评论 -
ClassLoader实验
一,ClassLoader的四个实验public class ClassLoaderTest extends TestCase { //任务1:输出加载自己所编写类(具体为Temp类)的classloader和ArrayList的classloader public void testGetClassLoader_Name(){ System.out.println(原创 2013-12-29 17:13:23 · 744 阅读 · 0 评论 -
反射之暴力反射
一 代码public class ReflectDemo { public static void main(String[] args) throws Exception{ ReflectPoint fp = new ReflectPoint(3, 4); Field fieldX = fp.getClass().getDeclaredField("x")原创 2013-12-30 21:49:50 · 3996 阅读 · 0 评论 -
Vector与ArrayList的区别
1,vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的。如果不考虑到线程的安全因素,一般用arraylist效率比较高。 2,如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%.如过在集合中使用数据量比较大的数据,用vector有一定的优势。 3,如果查找一个转载 2013-12-31 11:21:26 · 1320 阅读 · 0 评论 -
List、Set、数组的转换
数组和List、Set都可以存放多个元素,数组的特点是长度固定,访问速度非常快,元素类型单一;List的特点是长度可以动态增加,能够维护元素的次序,存入的所有元素都当做Object,允许元素重复;Set的特点是长度可以动态增加,能够保证元素不重复,存入的所有元素都当做Object。本节实例介绍Set、List和数组之间如何转换,将Set、List对象中的元素转换为数组,将数组转换为Set、List转载 2013-12-30 23:02:00 · 6481 阅读 · 0 评论 -
java增强之泛型练习
二 代码演示/** * 泛型练习,包括使用类库中的泛型方法和自定义泛型方法 * @author yajun */public class GenericTest extends TestCase { //任务1:泛型在反射中的应用 public void testGenericReflect()throws Exception{ Constructor consStr=原创 2013-12-30 23:28:05 · 2986 阅读 · 0 评论 -
已知javabean形式类的类名,给这个类的一个对象赋初值
这是黑马的一道入学测试题,代码如下:/** * 要求: 存在一个JavaBean,已知字符串形式的类名,并且它包含以下几种可能的属性: 1:boolean/Boolean 2:int/Integer 3:String 4:double/Double 属性名未知(这句话是重点!!!),现在要给这些属性设置默认值(题目的本质:根据属性类型,设置属性值!!),以下是要求的原创 2014-01-01 10:59:04 · 2134 阅读 · 0 评论 -
java.bean.PropertyDescriptor及其工具beanutils的学习
public class ItroSpectorTest extends TestCase { //利用PropertyDescription类的getReadMethod获取javabean的get方法 public void testPropertyDescriptor_Get() throws Exception{ //利用java.beans.PropertyDescripto原创 2013-12-27 00:15:22 · 2605 阅读 · 0 评论