Java中常用的API

API:应用程序编程接口,Java中的API就是将代码封装起来的类。
Object类:所有类都继承了此类,所有类的根类。
构造方法: public Object()。所有类的构造方法都会访问此类的无参构造。
Object--------hashCode()方法。
功能:返回该对象的哈希码值,默认情况下,该方法根据对象的地址值来计算。
特点:不同对象的hash值是不同的,同一个对象的hash值一定相同。
不是对象的实际地址值,可以理解为逻辑地址值。

   Object a = new Object();
       System.out.println(a.hashCode());
       //结果:356573597

Object--------getClass()方法。
功能:返回此 Object 的运行时类。
特点: 可以通过Class类的一个方法,获取对象的真实类的全名称

Object obj = new Object();
        Class aClass = obj.getClass();//  Object.class----->字节码文件对象获取出来
        Object obj2 = new Object();
        Class bClass1 = obj2.getClass();
        System.out.println(obj == obj2);
        System.out.println(aClass == bClass1);//true

Object--------toString()方法。
功能:返回该对象的字符串表示。
特点:其值是 getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
由于这些数据对我们没有意义,因此重写此方法。

 Object obj = new Object();
       System.out.println(obj);
       System.out.println(obj.toString());
       String a =obj.toString();
       System.out.println(a);

Object-----equals()方法。
功能: 检测两个对象是否相等。
特点:默认情况比较的是对象的引用是否相同。比较引用是否相同没有意义,因此重写此方法比较成员变量的值是否相等。
优点:提高效率和健壮性。
提问:==和equals的区别。
参考博客

https://blog.csdn.net/qq_33290787/article/details/51810529

简而言之就是数据存储区域不同,==判断的是是基本数据类型的值,equals处理引用类型变量。

Object-----clone()方法。
clone()的权限修饰符是受保护的,在用的时候,让该类重写该方法,并把该方法的权限修饰符改为public
克隆分为浅克隆和深克隆
使用clone()方法采用的是浅克隆的方式 。
浅克隆的使用:
*如果对象调用clone方法,该对象所属的类必须实现Cloneable接口。
*Cloneable接口只是一个标识接口,没有任何方法。
*浅克隆是一个对象的时候,如果被克隆的对象中存在另一个类的对象,则克隆另一个对象的地址不克隆另一个对象。
*对象的浅克隆不会调用到构造方法。

public class Text {
    public static void main(String[] args) throws CloneNotSupportedException{
        Person s1 = new Person("张惠妹", 40);
        Person s2 = (Person)s1.clone();
        s2.name="张三";
        s2.age=50;
        System.out.println(s1+""+s2);
    }
}public class Person implements Cloneable{
    public String name;
    public int age;

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

猜你喜欢

转载自blog.csdn.net/superfloat/article/details/85239932
今日推荐