一、泛型
1、泛型可以使程序的操作更加安全,可以避免发生类转换异常。
2、在程序中如果使用类时没有指定泛型,则泛型将被擦除掉,将使用Object接收参数。
3、可以使用通配符“?”接收全部的泛型类型对象。
4、通过<?extends类>可以设置泛型的上限,通过<?super类>可以设置泛型的下限。
5、泛型方法可以定义在泛型类中,也可以定义在普通类中。
6、泛型可以在接口中定义,实现泛型接口的子类要指明具体的泛型类型。
7、泛型可以嵌套使用。
8、在程序中定义没有方法的接口,这样的接口一般称为标识接口。
二、常用类库
1、在一个字符串内容需要频繁修改时,使用StringBuffer可以提升操作性能,因为 StringBuffer内容可以改变,而String内容不可以改变。
2、StringBuffer类中提供了大量的字符串操作方法,如增加、替换、插入等。
3、Runtime表示运行时在一个JVM中只存在一个Runtime,所以如果要想取得 Runtime类的对象,直接使用Runtime类中提供的静态方法getRuntime()即可。
4、国际化程序实现的基本原理为:所有的语言信息以key—>value的形式保存在资源文件之中,程序通过key找到相应的value,根据其所设置国家的Locale对象不同,找到的资源文件也不同。要想实现国际化必须依靠Locale、ResourceBundle两个类共同完成。
5、System类是系统类,可以取得系统的相关信息,使用System.gc()方法可以强制性地进行垃圾的收集操作,调用此方法实际上就是调用了Runtime类中的gc()方法。
6、Format类为格式化操作类,主要的3个子类是MessageFormat、NumberFormat、 DateFormat。
7、使用Date类可以方便地取得时间,但取得的时间格式不符合地域的风格,所以可以使用SimpleDateFomat类进行日期的格式化操作。
8、处理大数字可以使用Biglnteger和BigDecimal类,当需要精确小数点操作位数时应使用BigDecimaI类。
9、通过Random类可以取得指定范围的随机数字。
10、如果一个类的对象要被克隆,则此对象所在的类必须实现Cloneable接口。
11、要对一组对象进行排序,则必须使用比较器,比较器接口Comparable中定义了compareTo()的比较方法,用来设置比较规则。
12、正则表达式是开发中最常使用的一种验证方法,String类中的replaceAll()、split()、 matches()方法都对正则有所支持。
13、可以使用Time和TimeTask类完成系统的定时操作。
三、枚举
1、在程序中可以使用一个枚举来指定对象的取值范围。
2、在Java中使用enum关键字定义一个枚举类,每一个枚举类都是继承Enum类。
3、在枚举中可以通过values()方法取得枚举中的全部内容。
4、在枚举类中可以定义构造方法,但在设置枚举范围时必须显式地调用构造方法。
5、所有的枚举类都可以直接使用Comparable进行排序,因为Enum类实现了Comparable接口。
6、Java类集中提供枚举的支持类是EnumMap、EnumSet。
四、Java反射机制
1、Class类是反射机制操作的源头。
2、Class类的对象有3种实例化方式:
(1)通过Object类中的getClass()方法。
(2)通过“类.class ”的形式。
(3)通过Class.forName()方法,此种方式最为常用。
3、可以通过Class类中的newInstance()方法进行对象的实例化操作,但是要求类中必须存在无参构造方法,如果类中没有无参构造,则必须使用Constructor类完成对象的实例化操作。
4、可以通过反射取得一个类所继承的父类、实现的接口、类中的全部构造方法、全部普通方法及全部属性。
5、使用反射机制可以通过Method调用类中的方法,也可以直接操作类中的属性。
6、动态代理可以解决开发中代理类过多的问题,提供统一的代理功能实现。
7、在程序的开发中使用反射机制并结合属性文件,可以达到程序代码与配置文件相分离的目的。