美文网首页
Java基础-Object类

Java基础-Object类

作者: 若一爸爸 | 来源:发表于2019-02-28 16:47 被阅读0次

Object是Java所有类的父类,其重要方法包括:

//创建与该对象的类相同的新对象
Object clone()  
//返回一个对象运行时的实例类
Class getClass()    
//返回该对象的字符串表示
String toString()   
//比较两对象是否相等
boolean equals(Object)  
//返回该对象的散列码值
int hashCode()  
//激活等待在该对象的监视器上的一个线程
void notify()   
//激活等待在该对象的监视器上的全部线程
void notifyAll()    
//在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待
void wait() 

一、clone()

clone()方法创建并返回该对象的一个副本,其实现了对象中各个属性的复制,以下两点需要注意:

  1. Object类本身并未实现Cloneable接口,因此实现类需要实现Cloneable接口才能使用clone()方法,否则会抛出 CloneNotSupportedException 异常。
  2. clone()方法在对原始对象进行拷贝时,对基本类型数据是值复制,而对引用类型是进行引用复制,即和拷贝对象指向同一对象,属于浅拷贝,如需实现对象深拷贝需要重写clone()方法。

二、getClass()

该方法返回实例的类型类对象,即Class对象,类似于其他两种方式:

1.Obeject.class
2.Class.forName(String className)

getClass和.class的区别在于前者有多态性,返回的是运行时类型对象,而后者属于静态解析,编译时确定类型信息。

class Car{
}
class Audi extends Car{
}
public static void main(String[] args) {
  Car myCar = new Audi();
  System.out.println(myCar.getClass());
  System.out.println(Car.class);
}

//输出结果
class Audi
class Car

三、toString()

返回对象的string表示,常用于调试,通用的实体抽象基类如下,继承该类即可。

public abstract class BaseBean {
  
    public String toString() {
       StringBuffer sb = new StringBuffer();
       try {
           Class t = this.getClass();
           Field[] fields = t.getDeclaredFields();
           for (int i = 0; i < fields.length; i++) {
              Field field = fields[i];
              field.setAccessible(true);
              sb.append("{");
              sb.append(field.getName());
              sb.append(":");
              if (field.getType() == Integer.class) {
                  sb.append(field.getInt(this));
              } else if (field.getType() == Long.class) {
                  sb.append(field.getLong(this));
              } else if (field.getType() == Boolean.class) {
                  sb.append(field.getBoolean(this));
              } else if (field.getType() == char.class) {
                  sb.append(field.getChar(this));
              } else if (field.getType() == Double.class) {
                  sb.append(field.getDouble(this));
              } else if (field.getType() == Float.class) {
                  sb.append(field.getFloat(this));
              } else
                  sb.append(field.get(this));
              sb.append("}");
           }
       } catch (Exception e) {
           e.printStackTrace();
       }
       return sb.toString();
    }
}

相关文章

  • Java编程基础(11)

    Java编程基础知识:Java内置包装内 1.Java Object类详解:Object类的常用方法(equals...

  • Java常用包和第三方jar包

    一、Java常用包 java.lang--语言包:Java语言的基础类,包括Object类、Thread类、Str...

  • Java基础05Java API

    Java 基础04多线程 常用类 Object类:lang包下; 概述:Object是类层次结构的根类。所有的类都...

  • 事件类

    事件类 1.java.lang.object类 java.util.EventObject 类是所有事件对象的基础...

  • ##Java学习笔记之基础类库笔记

    Java学习笔记之基础类库笔记 Object 所有类,数组,枚举类的父类 Objects(Java7新增) 工具类...

  • Java基础-Object类

    Object是Java所有类的父类,其重要方法包括: 一、clone() clone()方法创建并返回该对象的一个...

  • Java中常用的类,包,接口

    Java.lang提供了Java编程的基础类,例如:math,Object,String,StringBuffer...

  • Java:常用包详解

    java.lang 该包提供了Java编程的基础类,例如 Object、Math、String、StringBuf...

  • 06 Java常用类

    java.lang.Object类 所有Java类的最终祖先,编译系统默认继承Object类,Object类包含了...

  • JAVA反射机制详解

    1.理解反射的基础:Class类 众所周知Java有个Object 类,是所有Java 类的继承根源,其内声明了数...

网友评论

      本文标题:Java基础-Object类

      本文链接:https://www.haomeiwen.com/subject/utqkuqtx.html