首页 > 编程语言 > 详细

Java中的Object类

时间:2020-02-06 21:47:22      阅读:80      评论:0      收藏:0      [点我收藏+]

  Java中Object类是所有类的直接或间接超类,处在所有类层次的最高点,包含了所有Java类中的公共属性。

 

一.主要方法

1.getClass():获取当前对象所属类的类信息,返回Class对象

例:

public class JavaObjectgetClassExample1 {  
    public static void main(String[] args)   
    {   
        Object obj = new String("JavaTpoint");   
        Class a = obj.getClass();   
        System.out.println("Class of Object obj is : " + a.getName());   
    }   
}  

//运行结果
Class of object obj is : java.lang.String

 

getClass()与class()区别

  getClass()与Class()在绝大部分情况下是一样的,都可以获得一个类型名。两者最直接的区别为:

    getClass()是一个实例类所具备的方法,只能有对象的实例变量才能调用,在程序运行时动态加载; 

      Class()为一个类的方法,获得类的Class对象,在java运行(编译)时就已经静态加载进去了。

例:

class A{

}

class B extends Class A{

}

public static void main(String[] args){
      B b = new B();    
      if(b.getClass() == B.class)
            System.out.println("Yes,b.getClass() equals B.class");

      if(b.getClass() == A.class) 
            System.out.println("Yes,b.getClass() equals A.class");
      else
            System.out.println("No");
}


//输出结果
Yes,b.getClass() euqals B.class
No    

  

2.toString():返回Java对象在堆中的内存地址

源代码

 public String toString() {

        return getClass().getName() + "@" + Integer.toHexString(hashCode());

    }

//例1
public class ObjectToStringTest1{
public static void main(String[] args){
Object obj = new Object();
System.out.println(obj.toString());
  }
}
//输出结果:java.lang.Object@7852e922

//例2:实体类
public class ObjectToStringTest2{
  public class Person{
String name;
    int age;

  Person(String Name,int Age){
      this.name = Name;
this.age = Age;
    }
    
    public String toString(){
      System.out.println("the person‘s Name is " + name + "Age is " + age);
    }
  }

  public static void main(String[] args){
    Person p1 = new Person("xuanming",18);
    System.out.println(p1.toString());
  }
}

 

3.equals():比较两个对象引用是否指向同一对象,是则返回true,否则返回false。

源代码:

public boolean equals(Object x){
         return this == x;          
}  

相等和同一

定义:

 1.相等:两个对象具有相同的类型,以及相同的属性值。

 2.同一:两个引用变量指向的是同一个对象,通常用”==“判断两个对象是否同一。

注:同一的对象必相等,相等的对象不一定同一。

 

public class Tester1{
	public static void main(String[] args){
		BankAccount a = new BankAccount("Bob",123456,100.00f);
		BankAccount b = new BankAccount("Bob",123456,100.00f);
		if(a == b){
			System.out.println("Yes");
		}else{
			System.out.println("No");
		}
		
		if(a.equals(b)){
			System.out.println("yes");
		}else{
			System.out.println("no");
		}

                b = a;
                System.out.println(a.equals(b)?"yes":"no");
	}
}

//运行结果
No
no
yes
//a和b通过初始化分配了各自的存储区,“==”要求比较对象存储区域相同且有相同的值

  

4.clone():复制当前对象,并返回这个副本

步骤:

  1.在类中覆盖clone方法,因为Object类中clone方法被定义为protected,需要覆盖为public。

  2.实现Cloneable接口,赋予一个对象被克隆的能力

 

class MyObject implements Cloneable{
        //...  
}

 

  

 

5hasCode():返回当前对象的哈希代码值

 规定:

  1. 在一个Java程序执行过程中,同一对象执行hashCode方法都应返回同一个整数。在不同的执行中,对象的hashCode方法返回值不必一致。

  2.如果依照euqals方法,两个对象是相等的,则在hashCode方法应该返回同样的整数结果。反之并不要求这两个对象的hashCode方法返回值不同。

6.finalize().

   在对象被垃圾回收之前,系统自动调用对象的finalize方法。如果需要覆盖finalize方法,覆盖的方法最后必须调用super.finalize.

 

7.notify、notifyAll、wait

  final方法,不能覆盖,主要用于多线程程序中。

Java中的Object类

原文:https://www.cnblogs.com/thwyc/p/12269640.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!