上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 42 下一页
摘要: 标准异常的层次结构 Java标准异常的层次结构代表的分类绝对是一个败笔。因为所有的异常对象都是在运行时抛出的,没听说过有什么编译期异常。因此RuntimeException类代表的实际上是逻辑错误导致的异常,即标准c++中的std::logical_error。 Java异常分为两大类,程序员只能抛出Exception异常对象,Error对象是Java系统在内部发生错误或者资源耗尽时才抛出的。 还有另外一种分类方法,Error和RuntimeException对象被称为unchecked exception,其他的则被称为checked exception,也就是说java编译器将对check 阅读全文
posted @ 2007-09-19 14:58 反正我信了 阅读(217) 评论(0) 推荐(0)
摘要: 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.. 阅读全文
posted @ 2007-09-19 14:45 反正我信了 阅读(158) 评论(0) 推荐(0)
摘要: 1)实现Cloneable接口,因为Object的clone方法将检查类是否实现了Cloneable接口,如果没有将抛出异常CloneNotSupportedException对象。Cloneable接口没有任何方法,只是个标志,所以只需要简单得写上implements Cloneable即可。2)改写从Object继承而来的clone方法,使它的访问权限为public,因为为了防止意外的支持clone操作,Object的clone方法是protected权限。3)在clone方法中,调用super.clone()方法。Object的clone方法能够按照旧对象的大小创建足够的内存空间,并按位 阅读全文
posted @ 2007-09-19 14:44 反正我信了 阅读(156) 评论(0) 推荐(0)
摘要: java中的volatile用来修饰成员变量代表对该成员变量的访问将是线程安全的,c++中的volatile修饰的变量代表不希望编译器将变量值缓存到寄存器或者其他高速缓存中,而是每次都通过总线操作从内存中读取值,但是并不意味着线程安全。 阅读全文
posted @ 2007-09-19 14:44 反正我信了 阅读(138) 评论(0) 推荐(0)
摘要: 匿名内部类,比如下面函数内部initialize定义了两个匿名类(红色代码部分): publicsynchronizedvoid initialize(Environment env, Detector detector, DaemonListener listener, PlainLogger[] loggers) throws NullPointerException, IllegalStateException { if (fInitialized) { return; } Helper.notNull( env, "environment" ); Helper.no 阅读全文
posted @ 2007-09-19 14:43 反正我信了 阅读(136) 评论(0) 推荐(0)
摘要: C++中有多继承,多继承很好,但是c++多重继承中,派生类继承了所有父类的实现,导致体积膨胀等缺点。C#和java的设计者坚持单继承,所有的类都派生自Object类,他们提供了interface来模仿c++的多继承(java里称为mixing—混合类型), 既利用了多继承的好处,又因为接口不包含任何方法实现和非静态成员变量,因而没有c++多重继承带来的困扰。 interface只能声明方法,不能实现方法。抽象类则可以实现方法,但是不能用于多继承。一个类可以扩展另一个类,同时又实现其它接口;一个接口也可以扩展自两个不同的接口。下面就是一个示例:publicclass MyInteger2 e.. 阅读全文
posted @ 2007-09-19 14:42 反正我信了 阅读(131) 评论(0) 推荐(0)
摘要: final的字面意思是指无法改变,但是不同的情况下使用,会有些许区别final成员变量当final修饰一个类的成员变量时,表示该成员变量是常量,这句话需要解释一下:如果该成员变量的类型是预定义类型,说明该变量值不可修改;如果该成员变量的类型是自定义类型,则该变量只是引用,那么该引用不能再指向别的对象,而对象的值却是可以修改的。 注意:1)当我们使用static final+预定义类型变量来表示一个静态常量的时候,变量名应该全部用大写字母,并且单词之间用下划线分隔。 2)使用final修饰的成员变量一定要立刻初始化其值。final参数 final修饰形式参数,意味着函数内部不可以让参数引用其它的 阅读全文
posted @ 2007-09-19 14:40 反正我信了 阅读(136) 评论(0) 推荐(0)
摘要: 构造函数是java类的最传统创建方式,除此之外,我们还可以选择经典的设计模式,经典的创建型设计模式包含了四种,factory,abstract factory,singleton和prototype。另外,在java中还有一种经常使用的模式---静态工厂方法(我们可以认为这是创建型模式的一种新的补充)。 什么是静态工厂方法?其实很简单,也就是类的设计者将构造函数设计为保护的或者私有的,而提供静态成员函数负责返回给客户已经创建好的对象。这样做有什么优点呢?1)首先引入了静态函数,增加了间接性,这样也就带来了灵活性,这一点和其他的创建型模式一样。设计者可在内部创建单例对象,也可以预先创建,以提高. 阅读全文
posted @ 2007-09-19 14:39 反正我信了 阅读(107) 评论(0) 推荐(0)
摘要: 如果我们对预定义类型使用==或者!=,就是值比较;如果我们对自定义类型的两个变量(引用)使用==或者!=,就是引用比较,也就是只比较内存地址。我们也可以调用自定义类型的equals方法进行比较。由于所有的自定义类型都是从Object派生,而Object类已经实现了equals方法,而这种默认的实现实际上就是引用比较,如果我们的自定义类需要提供值比较的语义,就需要重写该函数,并且在文档中说明。因此,我们不能简单理解为equales就是值比较,在某些情况下默认继承而来的引用比较更加符合某些场合的应用。String类型的equals提供了值比较的语义,比如:String str1=new Strin 阅读全文
posted @ 2007-09-19 14:39 反正我信了 阅读(264) 评论(0) 推荐(0)
摘要: 作为万类之首的Object类,我们有必要详细全面的了解一下。Object类定义在Object.java文件,属于包java.lang。 Object类有一个私有方法private static native void registerNatives(). native是java语言的一个关键字.使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用.JDK的源代码中并不包含这些函数的实现体,你应该是看不到的。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实. 阅读全文
posted @ 2007-09-19 14:38 反正我信了 阅读(1140) 评论(0) 推荐(0)
上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 42 下一页