09 2007 档案
摘要:通过request对象 request对象的类型为HttpServletRequest。在JSP翻译成的Java类中,有这样的函数:public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException 当客户请求到达服务器时,该函数将被调用。该函数负责生成并输出客户请求的html代码。HttpServletRequest是一个接口,扩展自ServletRequest接口。该接口提供了一系列方法,主要用于http.
阅读全文
摘要:Observable类 这是位于jdk包java.util中的类,该类实现了简单的Observer模式中的ConcreateSubject角色。Observable类使用Vector保存一组Observer的引用。提供了添加和删除这些Observer引用的方法: publicsynchronizedvoid addObserver(Observer o)//添加一个Observer publicsynchronizedvoid deleteObserver(Observer o)//删除一个Observer publicsynchronizedvoid deleteObservers()//删
阅读全文
摘要:Swing是什么 Swing属于JFC(Java Foundation Classes)的一部分。JFC包含了AWT,Swing,辅助功能API,Java2D,拖放。Swing的出现是为了解决AWT(Abastract Window Toolkit)的移植性和提供更多的企业级应用程序所需要的功能。Swing建立在核心AWT库上,JDK1.2以及更高的版本已经包含了Swing库。 Swing内部采用了MVC体系结构(modle-view-controller)。modle负责存放Swing组件的状态(数据),controller负责处理事件,view负责绘制图形。Swing使用了简化的MVC变体
阅读全文
摘要:定义 JavaBean的定义:根据Sun的JavaBean规范,一个bean就是一个可重用的软件构件、并能够在开发工具中可视化的操作。创建JavaBean JavaBean规范没有要求一个JavaBean类都必须有默认构造函数,但是大多数开发工具都有这样的要求,所以这成为了一个事实上的标准。所以,如果一个Java类要成为JavaBean,就需要提供一个默认构造函数。 JavaBean通过提供get/set方法来读取或者设置属性。 JavaBean通常需要支持序列化功能。一般是实现Serializable或者Externalizable接口。请参见序列化一节。 通过NetBeans创建JavaB
阅读全文
摘要:标准异常的层次结构 Java标准异常的层次结构代表的分类绝对是一个败笔。因为所有的异常对象都是在运行时抛出的,没听说过有什么编译期异常。因此RuntimeException类代表的实际上是逻辑错误导致的异常,即标准c++中的std::logical_error。 Java异常分为两大类,程序员只能抛出Exception异常对象,Error对象是Java系统在内部发生错误或者资源耗尽时才抛出的。 还有另外一种分类方法,Error和RuntimeException对象被称为unchecked exception,其他的则被称为checked exception,也就是说java编译器将对check
阅读全文
摘要:Serializable实现Serializable接口 这是最简单的序列化方式。下面的例子将类的内容写到文件中,然后再反序列化声称新的对象。public class MyClass implements Serializable{ private String name; private int value; public MyClass(String name,int value) { this.name=name; this.value=value; } public static void main(String[] args) throws ClassNotFoundExcept..
阅读全文
摘要:1)实现Cloneable接口,因为Object的clone方法将检查类是否实现了Cloneable接口,如果没有将抛出异常CloneNotSupportedException对象。Cloneable接口没有任何方法,只是个标志,所以只需要简单得写上implements Cloneable即可。2)改写从Object继承而来的clone方法,使它的访问权限为public,因为为了防止意外的支持clone操作,Object的clone方法是protected权限。3)在clone方法中,调用super.clone()方法。Object的clone方法能够按照旧对象的大小创建足够的内存空间,并按位
阅读全文
摘要:java中的volatile用来修饰成员变量代表对该成员变量的访问将是线程安全的,c++中的volatile修饰的变量代表不希望编译器将变量值缓存到寄存器或者其他高速缓存中,而是每次都通过总线操作从内存中读取值,但是并不意味着线程安全。
阅读全文
摘要:匿名内部类,比如下面函数内部initialize定义了两个匿名类(红色代码部分): publicsynchronizedvoid initialize(Environment env, Detector detector, DaemonListener listener, PlainLogger[] loggers) throws NullPointerException, IllegalStateException { if (fInitialized) { return; } Helper.notNull( env, "environment" ); Helper.no
阅读全文
摘要:C++中有多继承,多继承很好,但是c++多重继承中,派生类继承了所有父类的实现,导致体积膨胀等缺点。C#和java的设计者坚持单继承,所有的类都派生自Object类,他们提供了interface来模仿c++的多继承(java里称为mixing—混合类型), 既利用了多继承的好处,又因为接口不包含任何方法实现和非静态成员变量,因而没有c++多重继承带来的困扰。 interface只能声明方法,不能实现方法。抽象类则可以实现方法,但是不能用于多继承。一个类可以扩展另一个类,同时又实现其它接口;一个接口也可以扩展自两个不同的接口。下面就是一个示例:publicclass MyInteger2 e..
阅读全文
摘要:final的字面意思是指无法改变,但是不同的情况下使用,会有些许区别final成员变量当final修饰一个类的成员变量时,表示该成员变量是常量,这句话需要解释一下:如果该成员变量的类型是预定义类型,说明该变量值不可修改;如果该成员变量的类型是自定义类型,则该变量只是引用,那么该引用不能再指向别的对象,而对象的值却是可以修改的。 注意:1)当我们使用static final+预定义类型变量来表示一个静态常量的时候,变量名应该全部用大写字母,并且单词之间用下划线分隔。 2)使用final修饰的成员变量一定要立刻初始化其值。final参数 final修饰形式参数,意味着函数内部不可以让参数引用其它的
阅读全文
摘要:构造函数是java类的最传统创建方式,除此之外,我们还可以选择经典的设计模式,经典的创建型设计模式包含了四种,factory,abstract factory,singleton和prototype。另外,在java中还有一种经常使用的模式---静态工厂方法(我们可以认为这是创建型模式的一种新的补充)。 什么是静态工厂方法?其实很简单,也就是类的设计者将构造函数设计为保护的或者私有的,而提供静态成员函数负责返回给客户已经创建好的对象。这样做有什么优点呢?1)首先引入了静态函数,增加了间接性,这样也就带来了灵活性,这一点和其他的创建型模式一样。设计者可在内部创建单例对象,也可以预先创建,以提高.
阅读全文
摘要:如果我们对预定义类型使用==或者!=,就是值比较;如果我们对自定义类型的两个变量(引用)使用==或者!=,就是引用比较,也就是只比较内存地址。我们也可以调用自定义类型的equals方法进行比较。由于所有的自定义类型都是从Object派生,而Object类已经实现了equals方法,而这种默认的实现实际上就是引用比较,如果我们的自定义类需要提供值比较的语义,就需要重写该函数,并且在文档中说明。因此,我们不能简单理解为equales就是值比较,在某些情况下默认继承而来的引用比较更加符合某些场合的应用。String类型的equals提供了值比较的语义,比如:String str1=new Strin
阅读全文
摘要:作为万类之首的Object类,我们有必要详细全面的了解一下。Object类定义在Object.java文件,属于包java.lang。 Object类有一个私有方法private static native void registerNatives(). native是java语言的一个关键字.使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用.JDK的源代码中并不包含这些函数的实现体,你应该是看不到的。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实.
阅读全文
摘要:安装NetBeans 我的操作系统是Fedora7,操作系统自带Eclipse,但是由于缺少Java运行库,所以只能运行,不能调试。为了简单起见,我去Sun公司网站下载了NetBeans5.5.1(带JDK),文件名称为:jdk-6u2-nb-5_5_1-linux-ml.bin,大小为143072256 字节。 安装很简单,先执行chmod +xjdk-6u2-nb-5_5_1-linux-ml.bin,然后运行bin文件即可。会出现一个图形安装向导,跟着向导安装,很简单。 你可以在Applications->Programming下找到NetBeans的启动菜单,也可以执行下面的命令
阅读全文
浙公网安备 33010602011771号