java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java中的Object类

Java中的Object类详细解读

作者:时代&信念

这篇文章主要介绍了Java中的Object类详细解读,java.lang.Object是类层次结构的根类,即所有其它类的父类,每个类都使用 Object 作为超类,需要的朋友可以参考下

什么是Object类?

类 java.lang.Object是类层次结构的根类,即所有其它类的父类。

每个类都使用 Object 作为超类。(父类和超类是一个意思,不同的叫法) 也就是当初的Java语言设计时,就将Object作为所有类的父类, 是万类之父。

①Object类型的变量与除Object以外的任意引用数据类型的对象都存在多态引用。

method(Object obj){…} //可以接收任何类作为其参数
Person o = new Person();  
method(o);

②所有对象(包括数组)都实现这个类的方法。

③如果一个类没有特别指定父类,那么默认则继承自Object类。

public class Person {
	...
}
//等价于:
public class Person extends Object {
	...
}

Object类的相关方法

  1. equals()
  2. = =:

基本类型比较值:只要两个变量的值相等,即为true。

int a=5; 
if(a==6){…}

引用类型比较引用(是否指向同一个对象):只有指向同一个对象时,==才返回true。

Person p1=new Person();  	    
Person p2=new Person();
if (p1==p2){…}

用“==”进行比较时,符号两边的数据类型必须兼容(可自动转换的基本数据类型除外),否则编译出错

equals()

所有类都继承了Object,也就获得了equals()方法。还可以重写。

经典面试题:==和equals的区别?

toString()

方法声明:public String toString()

① 默认情况下,toString()返回的是“对象的运行时类型 @ 对象的hashCode值的十六进制形式"

② 在进行String与其它类型数据的连接操作时,自动调用toString()方法

Date now=new Date();
System.out.println(“now=”+now);  //相当于
System.out.println(“now=”+now.toString()); 

③ 如果我们直接System.out.println(对象),默认会自动调用这个对象的toString()

因为Java的引用数据类型的变量中存储的实际上是对象的内存地址,但是Java对程序员隐藏内存地址信息,所以不能直接将内存地址显示出来,所以当你打印对象时,JVM帮你调用了对象的toString()。

④ 可以根据需要在用户自定义类型中重写toString()方法 如String 类重写了toString()方法,返回字符串的值。

s1="hello";
System.out.println(s1);//相当于System.out.println(s1.toString());

例如自定义的Person类:

public class Person {  
    private String name;
    private int age;

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

finalize()

public class FinalizeTest {
	public static void main(String[] args) {
		Person p = new Person("Peter", 12);
		System.out.println(p);
		p = null;//此时对象实体就是垃圾对象,等待被回收。但时间不确定。
		System.gc();//强制性释放空间
	}
}

class Person{
	private String name;
	private int age;

	public Person(String name, int age) {
		super();
		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;
	}
	//子类重写此方法,可在释放对象前进行某些操作
	@Override
	protected void finalize() throws Throwable {
		System.out.println("对象被释放--->" + this);
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
	
}

getClass()

public final Class<?> getClass():获取对象的运行时类型

因为Java有多态现象,所以一个引用数据类型的变量的编译时类型与运行时类型可能不一致,因此如果需要查看这个变量实际指向的对象的类型,需要用getClass()方法

public static void main(String[] args) {
	Object obj = new Person();
	System.out.println(obj.getClass());//运行时类型
}

结果:

class com.atguigu.java.Person

到此这篇关于Java中的Object类详细解读的文章就介绍到这了,更多相关Java中的Object类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文