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可以使用键值对的形式,保存用户偏好或者是程序设置。数据存储的位置是系统决定的。
- Java Study@2014-10-02
- Java Study 02
- Thinking in Java Study(02)
- Java Study@2014-09-28
- Java Study@2014-09-29
- Java Study@2014-09-30
- study java
- Java study
- Study Java
- java study
- java study
- Java Study
- Java Study
- Java Study
- ------------------- java study-----------------------
- java study 02day-关键字与标识符
- java study 02day--位运算符
- study for java
- AsyncTask异步任务
- 局部变量,全局变量,静态变量_chris
- ACM-博弈之SG定理
- [原创]MAC系统使用教程,从零到高手!必备软件合集
- java忽略大小写实现
- Java Study@2014-10-02
- 数据结构和算法——动态规划
- C/C++学习笔记33:C++中标准库string类型
- Oracle数据库操作大全(十一)——数据字典和动态性能视图
- error C1083: 无法打开包括文件:“extensions/ExtensionMacros.h”: No such file or
- NYOJ 239 月老的难题(二分图最大匹配)
- Markdown语法
- 将一个英文句子单词顺序逆置(LeetCode | Reverse Words in a String)
- hiho模拟面试题2 补提交卡 (贪心,枚举)