博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java.lang.Object类(JDK1.7)
阅读量:5337 次
发布时间:2019-06-15

本文共 3572 字,大约阅读时间需要 11 分钟。

1.Object的类方法

package java.lang;public class Object {    private static native void registerNatives();     //静态代码块再类初始化的时候就加载本地方法    static {        registerNatives();    }        public final native Class
getClass(); // public native int hashCode(); //比较连个对象的引用是否现相等 public boolean equals(Object obj) { return (this == obj); } protected native Object clone() throws CloneNotSupportedException; //getClass().getName()是返回对象的全类名(包含包名),Integer.toHexString(hashCode()) 是以16进制无符号整数形式返回此哈希码的字符串表示形式。 public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } public final native void notify(); //多线程通讯调用的方法 public final native void notifyAll(); public final native void wait(long timeout) throws InterruptedException; public final void wait(long timeout, int nanos) throws InterruptedException { if (timeout < 0) { throw new IllegalArgumentException("timeout value is negative"); } if (nanos < 0 || nanos > 999999) { throw new IllegalArgumentException( "nanosecond timeout value out of range"); } if (nanos >= 500000 || (nanos != 0 && timeout == 0)) { timeout++; } wait(timeout); } //垃圾回收,一般由 JVM 自动调用,一般不需要程序员去手动调用该方法。 protected void finalize() throws Throwable { }}

2.equal 的方法 

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

可以看到,在 Object 类中,== 运算符和 equals 方法是等价的,都是比较两个对象的引用是否相等,从另一方面来讲,如果两个对象的引用相等,那么这两个对象一定是相等的。对于我们自定义的一个对象,如果不重写 equals 方法,那么在比较对象的时候就是调用 Object 类的 equals 方法,也就是用 == 运算符比较两个对象。我们可以看看 String 类中的重写的 equals 方法:  

public boolean equals(Object anObject) {        if (this == anObject) {            return true;        }        if (anObject instanceof String) {            String anotherString = (String) anObject;            int n = value.length;            if (n == anotherString.value.length) {                char v1[] = value;                char v2[] = anotherString.value;                int i = 0;                while (n-- != 0) {                    if (v1[i] != v2[i])                            return false;                    i++;                }                return true;            }        }        return false;    }

 

自定义Userbean 重写equals的方法,比较两个对象

public class UserBean {	private String username;	private String password;	public UserBean() {	}	public UserBean(String username, String password) {		this.username = username;		this.password = password;	}	public String getUsername() {		return username;	}	public void setUsername(String username) {		this.username = username;	}	public String getPassword() {		return password;	}	public void setPassword(String password) {		this.password = password;	}	@Override	public String toString() {		return "UserBean [username=" + username + ", password=" + password + "]";	}	@Override	public boolean equals(Object obj) {		if (this == obj) { 			return true;		}		if (obj == null || !(obj instanceof UserBean)) {			return false;		}		UserBean otherUserBean = (UserBean) obj;		if (otherUserBean.getUsername().equals(this.username) && otherUserBean.getPassword().equals(this.password)) {			return true;		}		return false;	}}

== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。

equals() : 它的作用也是判断两个对象是否相等(内容)

                 1,类没有覆盖equals()方法。则通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象。
                 2,类覆盖了equals()方法。一般,我们都覆盖equals()方法来两个对象的内容相等;若它们的内容相等,则返回true(即,认为这两个对象相等)。  

 3.hashCode 方法

 4. toString 方法

 5.getClass 和 instanceof  

 

  

 

 

 

 

 

  

转载于:https://www.cnblogs.com/xiaofuzi123456/p/11340060.html

你可能感兴趣的文章
VTKMY 3.3 VS 2010 Configuration 配置
查看>>
255. Verify Preorder Sequence in Binary Search Tree
查看>>
01_1_准备ibatis环境
查看>>
windows中修改catalina.sh上传到linux执行报错This file is needed to run this program解决
查看>>
[fowarding]Ubuntu jsp平台使用JDBC来连接MySQL数据库
查看>>
JavaScript中的BOM和DOM
查看>>
注册表操作
查看>>
360浏览器兼容模式 不能$.post (不是a 连接 onclick的问题!!)
查看>>
Yii安装使用教程(转)
查看>>
Java四种引用包括强引用,软引用,弱引用,虚引用。
查看>>
spring注入Properties
查看>>
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
查看>>
【BZOJ-2295】我爱你啊 暴力
查看>>
【BZOJ-1055】玩具取名 区间DP
查看>>
Bit Twiddling Hacks
查看>>
Windwos中的线程同步
查看>>
LeetCode : Reverse Vowels of a String
查看>>
时间戳与日期的相互转换
查看>>
jmeter(五)创建web测试计划
查看>>
python基本数据类型
查看>>