1、数组的相关操作
n 在Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。
n 数组的复制:System.arraycopy(),包括五个参数。对引用类型对象数组是浅拷贝。
n 数组的排序:Arrays.sort(),在java.utils包中,返回值为void。使用arrays.sort()的数组必须实现Comparable接口,该接口只有惟一一个方法compareTo()。
n 在已排序的数组中查找某个元素:Arrays.binarySearch(),返回值为int,代表数组中的索引。
2、封装类
n 针对八种基本数据类型定义的相应的引用类型-封装类。
基本数据类型 | 封装类 |
boolean | Boolean |
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
封装类都有类似的方法,具体参见JDK文档。
此外,所有的封装类都是只读类,内容一旦创建就不能修改,每一个基本数据类型只能创建一个不能修改的封装类。
3、Class类
n 在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。
n 获取Class实例的三种方式:
(1)利用对象调用getClass()方法获取该对象的Class实例;
(2)使用Class类的静态方法forName(),用类的名字获取一个Class实例(要处理forName()方法抛出的异常);
(3) 运用.class的方式来获取Class实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的Class实例。
n 在运行期间,如果我们要产生某个类的对象,Java虚拟机(JVM)会检查该类型的Class对象是否已被加载。如果没有被加载,JVM会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已被加载到内存,就可以用它来产生该类型的所有对象。
n newInstance() 调用类中缺省的构造方法。newInstance()返回对象为Object类,需要显式转换。
n 利用反射机制,可以动态的实现类的加载。(java.lang.reflect 对于包含子包的类,必须用import单独加载。)
4、Runtime类和Process类
Runtime类提供了应用程序和Java环境之间的一个接口。
n 每一个Java程序都有一个Runtime类的单一实例。
n 通过Runtime.getRuntime()获取Runtime类的实例。
n 通过Runtime.exec()来执行外部程序。
n Runtime类是使用单例模式的一个例子。
n Process类是抽象类,只能通过Runtime类来实例化。
5、设计模式
n 在我们进行程序设计时,逐渐形成了一些典型问题和问题的解决方案,这就是软件模式。
n 每一个模式描述了一个在我们程序设计中经常发生的问题,以及该问题的解决方案。
n 当我们碰到模式所描述的问题,就可以直接用相应的解决方法去解决这个问题,这就是设计模式。
n 设计模式参考书籍《 Java与模式》作者:阎宏 电子工业出版社出版
n 单例(Singleton)模式
(1)一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。
(2)单例类的一个最重要的特点是类的构造方法是私有的,从而避免了外部利用构造方法直接创建多个实例。
单例类的实现
class Singleton
{
private static final Singleton st=new Singleton();
private Singleton(){}
public static Singleton getInstance()
{
return st;
}
}