摘要: 1.定义内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为static,可用public、protected、private修饰。(而外部类不可以:外部类只能使用publi和default)。2.分类在一个类(外部类)中直接定义的内部类(成员内部类)、局部内部类、静态内部类、匿名内部类。3.使用方法A. 在一个类中直接定义的内部类1) 外部类不能直接访问内部类的的成员,但可以通过内部类对象来访问。2) 内部类作为外部类的成员,可以访问外部类的所有成员。3) 注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为 阅读全文
posted @ 2012-05-13 17:17 精灵博客园 阅读(521) 评论(0) 推荐(0) 编辑
摘要: Java中内存分析: 栈(Stack) :存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中)。 堆(heap):存放所有new出来的对象。 常量池(constant pool):在堆中分配出来的一块存储区域,存放储显式的String常量和基本类型常量(float、int等)。另外,可以存储不经常改变的东西(public static final)。常量池中的数据可以共享。 静态存储:存放静态成员(static定义的)。 1) String a = "abc";① String b = & 阅读全文
posted @ 2012-05-13 17:16 精灵博客园 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 1.概念: 运行时,对任意类,都能知道这个类的所有属性和方法;对任意一对象,都能够调用它的每个方法和属性;这种动态获取、动态调用的功能称为Java语言的反射机制。2.实现 Java反射相关的API在包java.lang.reflect中Member接口该接口可以获取有关类成员(域或者方法)后者构造函数的信息。AccessibleObject类该类是域(field)对象、方法(method)对象、构造函数(constructor)对象的基础类。它提供了将反射的对象标记为在使用时取消默认 Java 语言访问控制检查的能力。Array类该类提供动态地生成和访问JAVA数组的方法。Construct. 阅读全文
posted @ 2012-05-13 17:15 精灵博客园 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 案例:package com.devin;public class MyMain { public static void main(String args[]) { Father f = new Son(); }}class Father { public Father() { System.out.println("Father Construct"); } static int a=printFahter(); static int printFahter() { System.out.prin... 阅读全文
posted @ 2012-05-13 17:15 精灵博客园 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 1.概念 泛型就是参数化类型。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。2.案例1)先看下面案例//不适用泛型编程Apple app0=new Apple();Apple app1=new Apple(); List li = new ArrayList();li.add(app0); //添加非需要类型时发现不了错误。li.add(app1); Apple appUsed=(Apple)li.get(0); //使用泛型编程如下Apple app0=new Apple();Apple app1=new Apple(); Lis... 阅读全文
posted @ 2012-05-13 17:13 精灵博客园 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 1. JAVA调用系统命令或可执行程序// String cmd = "F:\\apache-tomcat-6.0.20.exe"; // String cmd = "D:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE F:\\test.doc"; // String cmd = "cmd.exe /c start F:\\test.doc"; String cmd = "ping www.baidu.com"; Runtime run = Runt 阅读全文
posted @ 2012-05-13 17:12 精灵博客园 阅读(236) 评论(0) 推荐(0) 编辑
摘要: Java内部类其实在J2EE编程中使用较少,不过在窗口应用编程中特别常见,主要用来事件的处理。其实,做非GUI编程,内部类完全可以不用。内部类的声明、访问控制等于外部类有所不同,要灵活使用内部类来编写程序,还是有相当难度的,Java发明了这种难懂的玩意儿,在其他语言中是没有的,但是在Java中,内部类也相当的重要,尤其做GUI开发时候,事件的响应处理全靠内部类了。内部类所做的功能使用外部类也同样可以实现,只是有时候内部类做的更巧妙些。内部类按照其所在位置不同,可分为以下几种:1、(普通的)内部类(最常见的内部类,内部类的定义与类成员平级,)2、方法内部类3、匿名类4、静态内部类5、接口内部类一 阅读全文
posted @ 2012-05-13 17:11 精灵博客园 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 案例:package com.devin;public class MyMain{ private static String name = "woobo"; private String num = "X001"; // 静态内部类可以用public,protected,private修饰 static class Person { // 静态内部类中可以定义静态或者非静态的成员 private String address = "China"; private static String x = "as"; . 阅读全文
posted @ 2012-05-13 17:10 精灵博客园 阅读(258) 评论(0) 推荐(0) 编辑
摘要: Java 中一共有 4 种类型的引用 : StrongReference、 SoftReference、 WeakReference 以及 PhantomReference ,这 4 种类型的引用与 GC 有着密切的关系, 让我们逐一来看它们的定义和使用场景 : 1. Strong Reference StrongReference 是 Java 的默认引用实现, 它会尽可能长时间的存活于 JVM 内, 当没有任何对象指向它时 GC 执行后将会被回收Java代码 @TestpublicvoidstrongReference(){Objectreferent=newObject();/*... 阅读全文
posted @ 2012-05-13 17:09 精灵博客园 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 案例一 下面使用java回调函数来实现一个测试函数运行时间的工具类:如果我们要测试一个类的方法的执行时间,通常我们会这样做:publicclassTestObject{/***一个用来被测试的方法,进行了一个比较耗时的循环*/publicstaticvoidtestMethod(){for(inti=0;i<100000000;i++){}}/***一个简单的测试方法执行时间的方法*/publicvoidtestTime(){longbegin=System.currentTimeMillis();//测试起始时间testMethod();//测试方法longend=System.cur 阅读全文
posted @ 2012-05-13 17:08 精灵博客园 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 如果某些操作不依赖具体实例,那它就是静态的,反之如果某些操作是依赖具体实例的(例如访问一个特定会员的名称),那它就应该是实例化的。静态方法不用new对象可以直接调用1.与类相关与对象无关2.不需要对象的“轻”方法3.工厂方法如果某个方法是用频率较高,或者方法本身通用性较强,无需初始化类成员变量,则可以使用静态方法,那样方便,速度也快.可以直接拿来就用的方法,就算是静态的.肯定不涉及具体对象,因为静态方法内,是无法直接使用任何非静态成员的。(1)制作工具类(2)可以当作"作局"对象或方法来使用静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别。静态方法不用创建实例就可 阅读全文
posted @ 2012-05-13 17:08 精灵博客园 阅读(128) 评论(0) 推荐(0) 编辑
摘要: import java.util.regex.Matcher; import java.util.regex.Pattern; /** * <p> * Title: HTML相关的正则表达式工具类 * </p> * <p> * Description: 包括过滤HTML标记,转换HTML标记,替换特定HTML标记 * </p> * <p> * Copyright: Copyright (c) 2006 * </p> * * @author hejian * @version 1.0 * @createtime 2006-1 阅读全文
posted @ 2012-05-13 17:07 精灵博客园 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 1. 概念 工厂方法:一抽象产品类派生出多个具体产品类;一抽象工厂类派生出多个具体工厂类;每个具体工厂类只能创建一个具体产品类的实例。 即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品类)。“一对一”的关系。 抽象工厂:多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体工厂类可创建多个具体产品类的实例。 即提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体的类。“一对多”的关系。2. UML工厂方法:抽象工厂:3. 代码工厂方法:public interface Product{ }... 阅读全文
posted @ 2012-05-13 17:06 精灵博客园 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 1. 概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点。2. UML图:3.代码:(1)懒汉模式:只有在自身需要的时候才会创建。运行时获得对象,它在整个应用的生命周期只有一部分时间在占用资源。 ?public class Singleton { private static Singleton singletonInstance; private Singleton() { } public static synchronized Singleton GetInstance() { if (singletonInstance == null) ... 阅读全文
posted @ 2012-05-13 17:06 精灵博客园 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 1.继承抽象类用泛化(Generalization)2.实现接口用实现(Realization)3. 依赖,一个类中的方法或功能必须依靠另一一个类的方法来完成,即一个类的变化会引起另一个类的变化。 关联, 一个类中,知道并可以使用另一个类的可访问元素,常见形式为一个类以属性的形式出现在另一类中。例如:http://www.cnblogs.com/millen/archive/2009/02/23/1396414.html 阅读全文
posted @ 2012-05-13 17:05 精灵博客园 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 1.概念:将一个接口转换成客户希望的另外一个接口。(该模式使得原本不兼容的类可以一起工作)2.UML图(1)对象的Adapter模式结构图(2)类的Adapter模式结构图3.代码(1)对象适配器?public interface Target { public void Request(); } public class Adaptee { public void SpecificRequest() { System.out.println("这是原始标准接口!"); } } public class Adapter implements Target { private 阅读全文
posted @ 2012-05-13 17:05 精灵博客园 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 1. 概念:定义一个算法的骨架,而将一些实现步骤延迟到子类中。 把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。2. UML图:3.代码:?public abstract class Templete { private void beforeOperation() { System.out.println("This acton before the operation!"); } private void afterOperation() { System.out.println("This acton after the operation!&qu 阅读全文
posted @ 2012-05-13 17:04 精灵博客园 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 1.概念为其他对象提供一种代理以控制对这个对象的访问。2.UML图:3.代码:?//抽象角色: public abstract class Subject { abstract public void request(); } //真实角色:实现了Subject的request()方法。 public class RealSubject extends Subject { public void request() { System.out.println("From real subject."); } } //代理角色: public class ProxySubjec 阅读全文
posted @ 2012-05-13 17:04 精灵博客园 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 1. 概念动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。[由于继承的静态特质使其缺乏灵活性;且随着子类的增多、组合,会导致更多子类的膨胀。类应设计的对扩展开放,对修改关闭。装饰的意思:就是包装一下。把另的对象包装一下。]2. UML图3.代码/************业务接口 Component************/ public interface Component { void operation(); }/************业务接口 Component*******... 阅读全文
posted @ 2012-05-13 17:03 精灵博客园 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 1.概念 定义一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。2.UML图3.代码interface Subject { public void attach(Observer observer); public void detach(Observer observer); void notifyObservers(); } public class ConcreteSubject implements Subject{ private Vector observersVector = new Vector(); pub... 阅读全文
posted @ 2012-05-13 17:03 精灵博客园 阅读(179) 评论(0) 推荐(0) 编辑