栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Object类及其常用方法及jdk源码。

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Object类及其常用方法及jdk源码。

Object类是所有类的超类,基类
里面有一些很常用的方法,子类可以对其进行重写
实现不同的功能。
其中有equals,hashCode,getClass,toString,finalize,clone,等常用方法。

equals方法:
只能用来进行引用类型的比较,比较的是地址是否相同,即是不是同一个对象。
子类往往对Object类中的方法进行重写,
String类中equals方法用来判断字符串的值是不是一样
Integer类中的equals方法用来判断属性值是否相等。
和==运算符的差别:
==运算符既可以判断基本类型,也可以判断引用类型。
equals运算符只能判断引用类型。

package Object_;
//比较两个引用是否指向同一对象。
public class Equals_ {
    public static void main(String[] args){
        G g=new G();
        G g2=new G();
        G g3=g;
        System.out.println(g.equals(g2));
        System.out.println(g3.equals(g));
        String s1="hspyyds";
        String s2="hspyyds";
        String s3="Javayyds";
        System.out.println(s1.equals(s2));
        System.out.println(s2.equals(s3));
        Integer integer=new Integer(5);
        Integer integer1=new Integer(7);
        Integer integer2=new Integer(7);
        System.out.println(integer.equals(integer1));
        System.out.println(integer1.equals(integer2));
        System.out.println(3==3.0);
    }
}
class G{

}

package Object_;
//比较两个引用是否指向同一对象。
public class Equals_ {
    public static void main(String[] args){
        G g=new G();
        G g2=new G();
        G g3=g;
        System.out.println(g.equals(g2));
        System.out.println(g3.equals(g));
    }
}
class G{

}

hashCode 方法原型:
public (native) int hashCode(){

}
作用:
1.该方法用来提高哈希结构容器的效率
2.两个引用,如果指向同一对象,则哈希码值肯定一样
3.两个引用,如果指向不同对象,一般情况认为哈希码值一样,在大范围可能存在冲突一样的。
4.哈希码值是通过对象地址得到的,但不要认为哈希码值就是地址
5.在集合中,如果需要hashCode方法,也会重写该方法。

public class HashCode {
    public static void main(String[] args){
        X x1=new X();
        X x2=new X();
        X x3=x1;
        System.out.println("x1.hashCode()="+x1.hashCode());
        System.out.println("x2.hashCode()="+x2.hashCode());
        System.out.println("x3.hashCode()="+x3.hashCode());

    }
}
class X{

}

toString方法:
用来返回对象的字符串。
返回一个 全类名+@+对象哈希码值。
子类可以重写该方法 来返回对象属性
该方法常用来返回对象属性,打印对象。
直接输出对象实际上就是默认让对象调用toString()方法

package Object_;
public class ToString {
    public static void main(String[] args){
        A a=new A("a",10);
        A a1=new A("x",20);
        A a2=a;
        Y y=new Y();
        System.out.println(a.toString());
        System.out.println(a1.toString());
        System.out.println(a2.toString());
        System.out.println(a);
        System.out.println(y);
        System.out.println(y.toString());
    }
}
class A{
    public String name;
    public int age;
    public  A(String name,int age){
        this.name=name;
       this.age=age;
    }
    public void setName(String name){
        this.name=name;
    }
    public void setAge(int age){
        this.age=age;
    }
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }

    public String toString(){
        return "name:"+name+"tage:"+age;
    }

}
class Y{

}

finalize方法:
protected void finalize()
当垃圾回收期确定不存在该对象的更多引用时,
由对象的垃圾回收器调用此方法
1.当对象被回收时,系统自动调用该对象的finalize方法,子类可以重写该方法
完成一些释放资源的操作。资源:数据库的连接的连接,打开文件的文件。
2.对象什么时候被回收:当某个对象没有任何引用时,JVM就认为该对象是一个垃圾,就会调用垃圾回收来销毁该对象,
在销毁该对象前,先调用finalize方法
3.垃圾回收机制的调用,是由系统调用的,也可以通过System.gc()主动触发垃圾回收机制

public class Finalize {
    public static void main(String[] args){
        Car car=new Car("奔驰");
        car=null;
        System.gc();//运行到这句话,程序不会阻塞,即不会等到这句话执行结束再执行下面的语句。
        System.out.println("程序退出了");
    }
}

class Car{
    private String name;
    public Car(String name){
        this.name=name;

    }

    @Override
    protected void finalize() throws Throwable {
        super.finalize();
        System.out.println("我们销毁了汽车");
        System.out.println("释放了一些资源");
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/329002.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号