摘要: SAX的使用import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class SaxTest1{ public static void main(String[] args) throws Exception, SAXException { //step1: 获得SAX解析器工 阅读全文
posted @ 2011-08-17 23:04 水之原 阅读(974) 评论(0) 推荐(0) 编辑
摘要: 所有对于正则表达式的操作位于java.util.regex包下。两个重要的类:Matcher Patternpackage com.anllin.regex;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Matches{ public static void main(String[] args) { Matcher matcher = Pattern.compile("\\w+").matcher( "this is a regex test, the fis 阅读全文
posted @ 2011-08-17 23:01 水之原 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 使用继承的方式来实现适配器模式 //目标类,它的方法里面调用Adaptee对象的方法public interface Target{ public void method1();}//被适配对象,它的方法会被Target类的方法调用。public class Adaptee{ public void method2() { System.out.println("method2 invoked"); }}//使用继承的方式来实现适配器模式 //适配器对象,实现用Target类的方法调用Adaptee类的方法,起到一个中间转化的作用。public class Adapter 阅读全文
posted @ 2011-08-17 22:57 水之原 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 对计算器进行单元测试package com.anllin.junit;public class Calculator{ public int add(int a, int b) { return a + b; } public int subtract(int a, int b) { return a - b; } public int multiply(int a, int b) { return a * b; } public int devide(int a, int b) throws Exception { if(0 == b) { throw new Exception(" 阅读全文
posted @ 2011-08-17 22:55 水之原 阅读(807) 评论(0) 推荐(0) 编辑
摘要: Collections◆所以的集合类都实现了collection接口。ArrayList◆集合中存放的是对象的引用而不是对象本身。◆ArrayList是一个动态增长的数组,当我们调用无参构造函数时,默认会分配一个长度为10的数组,当空间不足时会动态增长为原来的1.5倍加1,然后将旧的数组复制到新的数组当中,当新的数组无法容纳更多的元素时,重复该过程。◆可以用ArrayList(intinitialCapacity)来初始化数组的容量,容量过大时,可以用trimToSize()方法挤压到刚好适合的大小,也可以用ensureCapacity(intminCapacity)来调整大小。◆ArrayL 阅读全文
posted @ 2011-08-17 22:52 水之原 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 泛型(Genrics)所谓泛型就是变量类型的参数化泛型是JDK1.5中一个最重要的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastExceptons的可能。在jdk1.5中,你可以声明一个集合将接收/返回的对象的类型。泛型的ArrayListpublic class GenericTest1{ public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("aaa"); list.add(& 阅读全文
posted @ 2011-08-17 22:46 水之原 阅读(261) 评论(0) 推荐(0) 编辑
摘要: ★策略模式中体现了两个非常基本的面向对象设计的原则:--封装变化的概念--编程中使用接口,而不是对接口的实现★面向接口的编程,实现类之间的弱耦合★策略模式的定义--定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。--策略模式使这些算法在客户端调用它们的时候能够互不影响变化。★策略模式的组成--抽象策略角色:策略类,通常由一个接口或者抽象类实现--具体角色:包装了相关的算法和行为。--环境角色:持有一个策略类的引用,最终给客户端调用。★策略模式的实现:--策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。--策略模式使得算法可以在不影 阅读全文
posted @ 2011-08-17 22:38 水之原 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 使用反射经常要用到的类,位于java.lang.reflect包中。--Class类:代表一个类--Field类:代表类的成员变量--Method类:代表类的方法--Constructor类:代表类的构造方法--Array类:提供一个动态创建的数组,以及访问数组元素的静态方法。使用Method类public class RefletTest{ public static void main(String[] args) throws Exception { Class<?> classType = Class.forName("java.lang.String" 阅读全文
posted @ 2011-08-17 22:36 水之原 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 代理模式的作用:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理一般涉及到的角色:--抽象角色:声明真实对象和代理对象的共同接口--代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他操作,相当于对真实对象进行封装。--真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。抽象角色public abstract class Subject{ publ 阅读全文
posted @ 2011-08-17 22:29 水之原 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 三个常用的注解@Overridepublic class OverrideTest{ //@Override表示子类要重写基类对应的方法,可以防止出现写错方法名的错误。 @Override public String toString() { return "OverrideTest [toString()=" + super.toString() + "]"; } public static void main(String[] args) { OverrideTest test = new OverrideTest(); System.out.pri 阅读全文
posted @ 2011-08-17 22:28 水之原 阅读(259) 评论(0) 推荐(0) 编辑
摘要: GUI(GraphicalUser Interface),图形用户界面。AWT(Abstract Window Toolkit),抽象窗口工具集,第一代的java GUI组件,是重量级的Swing,不依赖于底层细节,轻量级的组件。Window有两种形式,一种是Frame ,一种是DialogFrame是一个顶级窗口,缺省为BorderLayout布局管理器Panel无法单独显示,必须添加到某个容器中,缺省为FlowLayout布局管理器。Frame的使用public class FrameTest{ public static void main(String[] args) { Frame 阅读全文
posted @ 2011-08-17 22:15 水之原 阅读(568) 评论(0) 推荐(0) 编辑
摘要: 共有四种:1.静态内部类编译生成StaticInnerClass$InnerClass.class文件示例1public class StaticInnerClassTest{ public static void main(String[] args) { //声明静态内部类的方式。 StaticInnerClass.InnerClass inner = new StaticInnerClass.InnerClass(); inner.output(); }}class StaticInnerClass{ private static int a = 4; //静态内部类只能访问外部类的静态 阅读全文
posted @ 2011-08-17 22:05 水之原 阅读(2167) 评论(0) 推荐(0) 编辑
摘要: File类用于对磁盘上的文件或目录进行操作直接父类是Object创建一个文件public class FileTest{ public static void main(String[] args) throws IOException { File file = new File("C:/text.txt"); System.out.println(file.createNewFile()); }}在一个目录下创建文件public class FileTest2{ public static void main(String[] args) throws IOExcept 阅读全文
posted @ 2011-08-17 22:04 水之原 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 将对象转换为字节流保存起来,并在以后还原这个对象,这种机制叫做序列化。将一个对象保存到永久存储设备上称为持久化。一个对象要想能够实现序列化,必须实现java.io.Serializable接口或Externalizable接口Serializable接口没有定义任何方法,是一个标识性接口(Marker Interface),当一个类实现了该接口,就表示这个类的对象是可以序列化的。序列化的特点:1.当一个对象被序列化时,只保存对象的非静态成员变量,不能保存任何的成员方法和静态变量。2.如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保存。3.如果一个可序列化的对象包含对某个不可序列 阅读全文
posted @ 2011-08-17 21:59 水之原 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 线程就是程序中单独顺序的流控制。线程本身不能运行,它只能用于程序中。线程是程序内的顺序控制流,只能使用分配给程序的资源和环境。多线程编程的目的,就是最大限度地利用CPU资源。多线程:指的是在单个程序中可以同时运行多个不同的线程执行不同的任务。进程:运行一个程序就会启动一个进程,本质是一个执行的程序。(程序是静态的,而进程是动态的)单线程:当程序启动时,就自动产生一个线程,主方法main就在这个主线程上运行。多线程:一个进程可以包含一个或多个线程一个程序实现多个代码同时交替运行就需要产生多个线程CPU随机的抽出时间,让我们的程序一会做这件事情,一会做另外一件事情。进程与线程的区别:进程是重量级的 阅读全文
posted @ 2011-08-17 21:58 水之原 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 浅复制(浅克隆):被复制对象的所有变量都含有与原来对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。深复制(深克隆):被复制对象的所有变量都含有与原来对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制的新对象,而不再是原有的那些被引用的对象。换言之,深复制把复制的对象所引用的对象都复制了一遍。Object的clone()方法将对象复制一份并返回给调用者。一般而言,clone方法满足:1.对任何的x,都有x.clone() != x克隆对象与原对象不是同个对象。2.对任何的对象x,都有x.clone() 阅读全文
posted @ 2011-08-17 21:54 水之原 阅读(2332) 评论(0) 推荐(0) 编辑
摘要: public class UDPTest1{ public static void main(String[] args) throws Exception { //接收数据报 DatagramSocket socket = new DatagramSocket(7000); byte[] buffer = new byte[1000]; DatagramPacket packet = new DatagramPacket(buffer,1000); socket.receive(packet); System.out.println(new String(buffer, 0 , packet 阅读全文
posted @ 2011-08-17 21:47 水之原 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 服务器端public class TcpServer{ public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(5000); while(true) { Socket socket = ss.accept(); new ServerInputThread(socket).start(); new ServerOutputThread(socket).start(); } }}客户端public class TcpClient{ public static void 阅读全文
posted @ 2011-08-17 21:46 水之原 阅读(358) 评论(0) 推荐(0) 编辑
摘要: public class URLTest{ public static void main(String[] args) throws Exception { URL url = new URL( "http://java.sun.com:80/docs/books/tutorial/index.html#DOWN"); String protocal = url.getProtocol(); String path = url.getPath(); String host = url.getHost(); String file = url.getFile(); int 阅读全文
posted @ 2011-08-17 21:43 水之原 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 1.创建MyTag类,并继承TagSupport类增加key属性,并实现doEndTag方法MyTag.javaimport java.util.Properties;import javax.servlet.jsp.JspException;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.tagext.TagSupport;public class MyTag extends TagSupport{ private String key; public String getKey() { return key; } 阅读全文
posted @ 2011-08-17 21:38 水之原 阅读(700) 评论(0) 推荐(0) 编辑