JavaSE---Object

1、概述

    Object常用方法

       1.1  getClass():            

1
public final native Class<?> getClass();

            返回   该对象   运行时的Class对象;

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.an.javase;
 
public class HashCodeTest {
 
    public static void main(String[] args){
        System.out.println(new Person().getClass());
    }
 
    static class Person{
        private String name;
        private int age;
    }
}<br><br>结果:<br>class com.an.javase.HashCodeTest$Person

 

       1.2  hashCode()

1
public native int hashCode();

             返回该对象的哈希码值;

             这个方法是为了支持java中的散列表,比如:HashMap、hashtable...

             ******java中   调用同一个对象的hashCode()必须   返回相同的整数;

               但是,存在一个问题:有可能不同对象的hashCode()返回值相等

 

       1.3  equals()

1
2
3
public boolean equals(Object obj) {
      return (this == obj);
}

              比较2个对象是否相等(内存中的地址值);

              该方法规定:如果2个对象equals()返回true,则必须有相同的hashCode值

              实际业务中:需要比较不同内存对象但内容相同,也视为相同,需要重写equals();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.an.javase;
 
public class EqualsTest {
 
    private String name;
    private Integer age;
 
    @Override
    public boolean equals(Object obj) {
        if (this==obj){
            return true;
        }
        if (obj instanceof EqualsTest){
            EqualsTest equalsTest=(EqualsTest) obj;
            if (equalsTest.name.equals(this.name)){
                return true;
            }
        }
        return false;
    }
}

  

       1.4  toString()

1
2
3
public String toString() {
      return getClass().getName() + "@" + Integer.toHexString(hashCode());
  }

             对象自我描述的功能,告诉外界该对象具有的信息;

             当直接将对象进行输出时,调用的是toString();

             toString()返回值:类名+@+hashCode值

 

       1.5  wait()

       1.6  wait(long timeout)

       1.7  wait(long timeout, int nanos)

       1.8  notify()

       1.9  notifyAll()

       1.10  clone()

       1.11  finalize()

1
protected void finalize() throws Throwable { }

            当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象;

posted on   anpeiyong  阅读(145)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示