Object类
Object类是所有类,数组,枚举类的父亲,所以所有类型的对象都可以赋给Object类。定义类是如果没有extends指定父类,默认父类为Object。它提供的几种常用方法
Object类还提供了一种克隆的方法,可以实现对象的自我复制,但是该方法只能被子类调用或重写,使用时只要调用"super.clone();"就能得到克隆的副本该克隆比静态copy方法要快两倍,但是默认的克隆只是浅克隆,只会克隆对象变量的值,不会克隆对象。
此外新增的toString(Object o),可以避免引用变量为null引发的异常。
String、StringBuffer 和StringBuilder类
Java提供了String 和StringBuffer 两个类来封装字符串,String类是不可变类,String对象一旦被创建,就不能改变直到该对象被销毁(对象不可变,但是对象所指的内存区中的值是可以改变的)。
import java.util.Date;
public class Test{
public static void main(String[] args) {
String s = "ABCabc";//原本指向内存区中的"ABCabc"
System.out.println("s = " + s);
s = "123456";//然后指向内存区中的“123456”
System.out.println("s = " + s);
}
}
import java.util.Date;
public class Test{
public static void main(String[] args) {
String s=new String("ABC");
s=s+"abc";//实际上是创建了另外一个新的s对象,之前的s对象已经变成了垃圾内存被回收,因为原本s的长度不允许它这样操作,所以只能新建一个长度匹配的s对象
System.out.println(s);
}
}
用法:
StringBuilder和StringBuffer的改进就是他的对象是可变的,有append()追加,insert(插入的位置,插入的元素)插入,replaces()替代,delete()删除,reverse()反转。这两个的用法都一样,只是StringBuffer是线程安全的。
Math类
它的构造器被定义成private,所以不能创建Math对象,Math类的方法都是类方法,很多高级一点的数学运算都能够通过Math的类方法实现
ThreadL ocalRandom与Random
Random类它有两个构造器:一个构造器使用默认的种子( 以当前时间作为种子),另一个构造器需要程序员显式传入-一个long型整数的种子。
ThreadL ocalRandom可以保证系统具有更好的线程安全性。
它们的作用就是生成随机数(Math也可以),第二种提供了更多方法生成随机数,Random生成随机数的机制是通过种子,如果种子相同,生成的随机数也相同,所以生成的是伪随机数。
BigDecimal类
该类是为了能精确表示、计算浮点型,避免精度丢失。该类提供了大量的构造器用于创建BigDecimal对象,包括把所有的基本数值型变量转换成一-个 BigDecimal对象,也包括利用数字字符串、数字字符数组来创建BigDecimal对象。当程序使用new BigDecimal(0.1)来创建-一个BigDecimal对象时,它的值并不是0.1,它实际上等于一个近似0.1的数。这是因为0.1无法准确地表示为double 浮点数,所以传入BigDecimal构造器的值不会正好等于0.1 (虽然表面上等于该值)。如果使用BigDecimal(String val)构造器的结果是可预知的一一写 入new BigDecimal(“0.1”)将创建一个BigDecimal,它正好等于预期的0.1。因此通常建议优先使用基于String的构造器。