Java Study@2014-10-02

来源:互联网 发布:儿童编程加盟 编辑:程序博客网 时间:2024/05/17 16:55

1.运行时类型信息可以在程序运行时发现和使用类型信息。

主要有两种方式:

a.RTTI,Run-Time Type Information.假定在编译时已经知道了所有类型。

b.反射,允许在运行时发现和使用类的信息。


2.在Java中所有类型转换都是在运行时进行正确性检查的。即RTTI,在运行时识别对象的类型。


3.Java程序在它开始运行之前,并非完全被加载的,按需加载。想在运行时使用类型信息,就必须首先获得对恰当的Class对象的引用,Class.forName()可以使你不用实例化一个类就可以持有一个对Class对象的引用。但是如果有一个对象了,那就调用对象的getClass()方法。


4.Class.class 也可以用来生成对Class对象的引用。但是Class.forName()对类进行初始化,但是Class.class并不对类进行初始化。


5.?

为了在使用泛化的Class引用时放松限制,Java使用了类型通配符“?”,表示任何类型。例如:

Class<?> intClass = int.Class;

intClass = double.class;

如果想使用范围限定,则要将?与extends关键字一起使用。即:Class<? extends Number>, 可以在编译期就检查出错误的类型存在。

6.cast()

Java SE5添加了用于Class引用的转型语法。

例如:

Building b = new House();

Class<House> houseTye = House.class;

House h =  houseType.case(b);

// h = (House)b;

7.instanceof 

可以用来进行类型的询问。返回boolean值。


8.反射

RTTI要求所有的类型必须在编译时已知。

但是假设获取的一个指向并不在程序空间中的对象的引用,例如,从磁盘文件,或者网络获取的一串字节,并且被告知这些字节代表一个类。

“基于组件编程”就是这样的一个例子。

反射提供了一种机制---用来检查可用的方法,并返回方法名。

JavaBeans提供了基于组件的编程架构。

Class类与java.lang.reflect类库一起对”反射“进行了支持。


9.泛型

类似于C++中的Template,即模板编程。让方法调用与具体类型进行解耦。

类型T,用来进行参数化类型。

在Java中绝大部分类的根节点都是Object。


10.I/O

a. InputStream&OutputStream是Java I/O中输入输出的两个基类。

b. Java1.1 设计了Reader&Writer继承层次重要为了国际化,它们是一个适配器,对于上边的两个类。

c. 对于很多的Input&Output类都有相应的Reader&Writer类,除了DataInputStream&DataOutputStream.它针对的是基本数据类型的操作。

d.推荐使用Reader类&Writer类。

e. Java JDK1.4 引入java.nio.*. 主要用来提高速度,其中ByteBuffer是唯一直接与通道交互的缓冲器。关于文件流类,有新的FileChannel类,在通道中产生Reader&Writer。

f. Java提供了ZIP&GZIP的解压缩类,它们属于InputStream&OutputStream继承层次结构。

g. Java的对象序列化,将那些实现了Serializable的接口的对象转换成一个字节序列。并能够在以后将这个字节序列完全转化为原来的对象。

而Externalizable的接口可以对徐泪花的过程进行控制。

h.将数据转换成XML格式有时候可供多平台使用,javax.xml.*库中提供了很多的方法。

i. 使用Java JDK中的Preference API可以使用键值对的形式,保存用户偏好或者是程序设置。数据存储的位置是系统决定的。




0 0
原创粉丝点击