zoukankan      html  css  js  c++  java
  • java.lang.Object类(JDK1.7)

    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  

      

      

  • 相关阅读:
    C语言之基本算法24—黄金切割法求方程近似根
    windows下PHP不能开启pgsql扩展的解决方法
    Linux 文件基本属性
    Android倒计时功能的实现
    hdu2444The Accomodation of Students (最大匹配+推断是否为二分图)
    Asp.net core使用IIS在windows上进行托管
    [Asp.net]web.config customErrors 如何设置?
    [Asp.net mvc]Html.ValidationSummary(bool)
    [C#基础]说说lock到底锁谁?(补充与修改)
    [web.config]如何灵活使用配置文件
  • 原文地址:https://www.cnblogs.com/xiaofuzi123456/p/11340060.html
Copyright © 2011-2022 走看看