Java的Object类

 

Java中的几个Object 类:其他的类都是直接或简洁继承这几个。该类中有几种主要方法:
可以重写:
1. equals()
2. hashCode()
3. toString()
8. clone()

不可重写:(被final 修饰)
4. wait()
5. notify()
6. notifyAll()
7. finalize()
9. getClass()  getClass().getName()

API中的解释就是,返回该对象的字符串表示。

    private void toStringTest(){

        Pikachu a = new ObjectTest().new Pikachu("ABC");
        Pikachu b = new ObjectTest().new Pikachu("ABC");

        System.out.println(a.toString());
        System.out.println(b.toString());
    }

但是:输出结果形如类名+对象内存地址:

com.loongshawn.ObjectTest$Pikachu@5e2de80c
com.loongshawn.ObjectTest$Pikachu@1d44bcfa

期望的是:如果本意是想输出这个对象的名字呢,则需要在自定义的类Pikachu中重写toString()方法,如下:

    private class Pikachu{

        private String name;

        private Pikachu(String name){
            this.name = name;
        }

        public String toString(){
            return name;
        }
    }

输出结果如下:

ABC
ABC

Object 类的几个方法的重写。

package thread;
import java.util.*;
public class ObjectInstances {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		System.out.println(new ObjectInstances());
		
		String s1 = "123";
		String s2 = "123";
		System.out.println(s1.equals(s2));
		V v1 = new  V("1");
		V v2 = new V("1");
		System.out.println(v1.equals(v2));
		
		V v3 = new V("12");
		V v4 = new V("2");
		Collection c = new HashSet();
		c.add(v3);
		c.add(v4);
		System.out.println(v3.equals(v4));
		System.out.println(v3.hashCode());
		System.out.println(v4.hashCode());
		
		
		TreeSet c1 = new TreeSet();
		c1.add(1);
		c1.add(2);
		Iterator iter = c1.iterator();
		while(iter.hasNext()){
			System.out.println(iter.next());
			
		}
		

	}
	/*toString()方法;
可重写;如果在实际使用中为特定对象提供一个特定的输出模式,当这个类型转换为字符串
或字符串连接时,建自动调用重写的toString()方法。*/
	public String toString(){
		return "重写方法"+getClass().getName();
	}
	/*从本例可以看出,在自定义的类中使用equals()方法进行比较时,
	 * 将返回false,因为equals方法的默认实现是"=="运算符,
	 * 即比较两个对象的引用地址,而不是比较对象的内容。
	 * 所以要想真正比较两个对象中的内容,需要在自定义类中重写equals()方法。*/
	

}

 class V {
	 private String val;
	 public V(String val){
		 this.val = val;
	 }
	 public String tostring(){
		 return this.val;
	 }
	 public boolean equals(Object o1){
			if(o1 instanceof V){
				V v =(V) o1;
				System.out.println("equal:"+v.val);
				return (val.equals(v.val));
			}
			return super.equals(o1);
	}
	 public int hashCode(){
		 V v = (V) this;
		 System.out.println("hash:"+v.val);
		 return val.hashCode();
		 
		 
	 }
		
	 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值