jdk中个别类的介绍-Object、Class、Arrays
1.java.lang.Object是类层次结构的根类,每个类都使用Object作为超类。所有对象(包括数组)都实现这个类的方法。
常用方法:
protected Object clone():创建并返回此对象的一个副本。JDK中的解释让我不明所以,在此直接给出如何使用该方法:1.类实现Cloneable接口;2.重写Object.clone()方法,并声明为public;3.在此方法中,对新返回对象中的非基本类型的属性和可变字段进行修改。(api是如此说,如果一个类只包含基本字段或对不变对象的引用,那么通常不需要修改 super.clone 返回的对象中的字段。)
import java.util.Date; class Person implements Cloneable { private int age;//基本类型 private String name;//字符串是常量,不能修改,name为对不变常量的引用 private Date birth;//可变对象 public Person(int a,String n,Date b){ age=a; name=n; birth=b; } @Override public Object clone() throws CloneNotSupportedException{ Person p = (Person)super.clone(); //Date实现了Cloneable接口,直接调用即可 p.birth=(Date)this.birth.clone(); return p; } }
protected void finalize():当垃圾回收器确定不存在对该对象的更多引用时,就调用此方法。子类可以重写来执行其他清除等操作。finalize 的主要目的是在不可撤消地丢弃对象之前执行清除操作。任何给定对象,Java虚拟机最多只调用一次finalize。
其他有:toString(),equals(Object),getClass()等。
2.个人把java.lang.Class<T>理解为一个模板,它的实例表示正在运行的java应用程序中的类和接口。常可以obj.getClass()或obj.class得到Class实例。
反射用到的方法有:static Class forName(String className);Constructor getConstructor(Class... parameterTypes);Field getField(String name);Method getMethod(String name,Class...parameterTypes)。
public T newInstance():创建此Class对象所表示的类的一个新实例。等同于new T()。
public boolean isInstance(Object obj):判断obj是否与此Class所表示的对象赋值兼容,相当于instanceof运算符。
其他的有isArray(),isInterface(),isPrimitive()等系列方法,判断Class对象的类型。
public URL getResource(String name):结合当前类的路径和name,查找资源。它是以顶层package作为根目录,比如在Web应用中,WEB-INF下classes目录为根目录。如果name以“/"开头,则以根目录为起始目录进行查找;否则,为相当于当前类的路径。
//返回顶级目录下的test.txt File file1=Test.class.getResource("/test.txt").getFile(); //返回test.class所作目录下的文件test1.txt File file2=Test.class.getResource("test1.txt").getFile;
3.java.util.Arrays用来操作数组,包括排序、搜索等静态方法。
List<T> asList(T... a):参数可以是个数组,也可以是多个实例(如asList("abc","def","ghi"))。注意:asList返回的List类型是Arrays的内部类ArrayList,所以不能直接赋值给java.util.ArrayList类型的变量,只能转为AbstractList(抽象类)。api说返回的是指定数组的列表视图,对List的操作会反映到对应的数组上,而且是定长的,不支持remove/add操作。
int binarySearch(T[],T key)系列方法,T可以为各种基本数据类型,使用二叉搜索法查询key。
T[] copyOf(T[],int newLength):复制数组,不足用0或null补充。类似的有copyOfRange()。
boolean equals(T[],T[]):判断两个指定数组是否彼此相等。
void fill(T[],T):用指定值填充指定数组。
void sort(T[]):升序排序。