12、反射:
创建对象的一种方式,动态修改jvm中的成员
Class cla = Class.forName ("lhl.in.out.MyBuffer" );
动态解析Class文件中的构造函数,成员变量,成员方法
13、泛型:
不能再静态成员上使用泛型类型
泛型中的数据类型一定是封装数据类型。
所谓泛型-就是允许在定义类,接口,方法时使用类型形参,这个类型形参将在声明变量,创建对 象,调用方法时动态的指明.
14、枚举类:
public Enum weekEnum{
monday,
friday,
sunday;
}
枚举类:1>是一种特殊的类,它可以定义成员变量,成员方法,可以实现一个或者多个接口
由于其不能实例化,所以只能定义自己(私有)的构造器
枚举类的属性间一逗号隔开
2>不能继承具体类和抽象类,必须通过Valueof实现具体的对象
3>自定义的枚举类,其父类是Eunm,而不是Object
Enum e = Enum.valueOf(cla, "xxx");
15、IO:
输入流 输出流
字节流: FileoutputStream FileinputStraem
字符流: InputStreamReader OutputStreamWrite[可以设置编码格式]
缓冲流: BufferReader BufferWriter
File file = new File("e://download");
File file = new File(file,"a.jpg")
IO中最为丰富的一个流:RandomAccssFile ran = new RandomAccessFile (new File(""), "" );
NIO:new io
新的Io和传统的 Io有相同的目的,都是用来进入输入和输出的,但是新的IO使用了不同的方式来处理输入和输出。新IO采用内存映射文件的方式来处理输入和输出,
新IO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件,通过这个访问文件比传统的Io要快得多。
2:java.nio相关的包:
a:java.nio包:主要包含各种与Buffer相关的类。
b:java.nio.channels包:主要包含各种与Channel和Selector相关的类。
c:java.nio.charset:主要包含与字符集相关的类
d:java.nio.channels.spi:主要包含与Channel相关的服务提供者编程接口。
e:java.nio.charset.spi:主要包含与字符集相关的服务提供者编程接口。
3: Channel通道和Buffer缓冲是 Nio中的两个核心对象,Channel是对传统IO的模拟。所有的NIO系统中所有的数据都需要通过通道传输,Channel与传统的InputStream和OutputStream
最大的区别在于他提供了一个map()方法,通过map方法可以直接将一块数据映射到内存中,如果说传统的 Ios是面向流的处理,而NIO是面向快的处理。
Buffer可以被理解成一个容器,它的本质是一个数组,发送数据到Channel中的所有对象都必须首先放到Buffer中,而从Channel中读取的数据也必须向放到Buffer中。
16、异常:编译时异常+运行时异常
编译时异常:io,sql,反射
运行时异常:
17:jsoup:文件解析/xml文件解释【重点】
18、json 、Bean、Map相互转换
1、首先定义一个类,定义私有属性,生成get、set方法。
2、创建属性类的对象,将值set进去
3、Map<String, String> map = BeanUtils.describe (person );//Bean转换为map
4、
public static <T>T map2Bean(Map<String, String> map,Class<T>class1 ){
T bean = null;
try {
bean = class1.newInstance();
BeanUtils. populate(bean, map);
} catch (InstantiationException|InvocationTargetException|IllegalAccessException e) {
e.printStackTrace();
} return bean ;
}
5、Person pp = map2Bean( map, Person.class);//Map转为Bean
System.out.println( pp.getName());
[备注:有Date类型的时候需要先注册下]
必须导入:commons-beanutils-1.9.2.jar;commons-logging-1.2.jar包
struts2-json-plugin-2.3.15.1.jar(喜欢用) 是对 json-lib-2.3-jdk15.jar【谷歌】的封装
Bean转json: String jsonstring = JSONUtil.serialize (person );[需要javaee包或者web环境下]
map转json: String jsonstring = JSONUtil.serialize (map )此处的map可以是任何对象/Object
JSONUtil有个反序列化:
JSON转map
Map<String,String> mm = (Map<String, String>)JSONUtil.deserialize(jsonstring );
json参与转换的时候必须导入:
19、StringBuffer、StringBuffer为了弥补String的缺陷而出现的,不会产生垃圾数据
StringBuffer:线程安全的,消耗内存比较大
StringBuilder:非线程安全的,消耗内存小【开发中常用】
20、日期类Date:
日历类:抽象类【开发中常用】
关于日期封装的两个工具jar包:
joda-time-1.6.2.jar date4j.jar