《疯狂Java讲义》(二十一)---- 常用类

  • Object类
class Address {
    String detail;
    public Address(String detail) {
        this.detail = detail;
    }
}

class User implements Cloneable {
    int age;
    Address address;
    public User(int age) {
        this.age = age;
        address = new Address("Shanghai");
    }
    
    public User clone() throws CloneNotSupportedException{
        return (User)super.clone();
    }
}
public class CloneTest {

    public static void main(String[] args) throws Exception {
        User u1 = new User(29);
        User u2 = u1.clone();
        System.out.println(u1 == u2);
        System.out.println(u1.address == u2.address);
    }

}

Object类的clone只是浅复制,不会对引用类型的Field值所引用的对象进行克隆,如果需要进行深复制,需要自己进行递归克隆。

  • Objects类

  是一个工具类,它提供了一些工具方法来操作对象,这些工具方法大多是空指针安全的。

import java.util.Objects;

public class ObjectsTest {

    static ObjectsTest obj;
    public static void main(String[] args) {
        System.out.println(Objects.hashCode(obj));
        System.out.println(Objects.toString(obj));
    // 要求obj不能为null,如果为null,抛出空指针异常
    // 主要用来对方法形参进行输入校验
System.out.println(Objects.requireNonNull(obj,
"obj cannot be null")); } }
  • String/StringBuffer/StringBuilder

  StringBuffer是线程安全的,StringBuilder没有实现线程安全,所以性能高。

  • Math类

  完成复杂运算的工具类。

  • ThreadLocalRandom和Random

  Random用于生成伪随机数

  ThreadLocalRandom类是Random的增强版,在并发访问的环境下,使用ThreadLocalRandom来代替Random可以减少多线程资源竞争。

  ThreadLocalRandom和Random都比Math的random方法提供了更多的方式来生成各种伪随机数,浮点类型的,整型的,还可以指定生成随机数的范围。

  • BigDecimal类

  创建BigDecimal对象时,不要直接使用double浮点数作为参数来调用BigDecimal的构造器,否则会发生精度丢失的问题。

原文地址:https://www.cnblogs.com/IvySue/p/6347691.html