欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java中object类实例分析

程序员文章站 2024-02-21 10:50:10
问:什么是object类? 答:object类存储在java.lang包中,是所有java类(object类除外)的终极父类。当然,数组也继承了object类。然而,...

问:什么是object类?

答:object类存储在java.lang包中,是所有java类(object类除外)的终极父类。当然,数组也继承了object类。然而,接口是不继承object类的,object类不作为接口的父类。

下面,我们就通过实例,对object进行分析

public class objectstu {
	/*object类:java里所有类的父类,顶层的类
 *equals:判断两个对象是否"相等";
 *hashcode:返回一个对象的哈希码值,是一个整数
 *因为之后的容器,例如hashset和hashmap会对元素进行去重的处理;所以equals和hashcode需要同时重写;
 *重写之后需要满足的标准:
 *当equals的结果为true的时候,要求两个对象的hashcode值相等;
 *当equals的结果为false的时候,要求两个对象的hashcode值不等;(hashcode可以相等,但是如果不等可以提升效率)
 *tostring:返回对象的字符串表示
 *作用:方便程序内查看对象属性,方便调试代码
 *debug学习:
 *1.在可能出现bug的地方设置断点
 *2.run as debug
 *3.f6,执行当前代码;f5,进入当前本句代码的方法内部;f8,快速跳到下一个断点,如果没有下一个断点,运行余下所有代码
 *equals:
 *1.一致性:使用对象a调用equals和对象b进行比较,每一次的结果都应该一样
 *2.自反性:对象a调用equals比较对象b和对象b调用equals比较对象a的结果应该一样
 */
	public static void main(string[] args)
	 {
		person per = new person("小王",10,150);
		person per1 = new person("小王",20,140);
		person per2 = per;
		system.out.println(per==per1);
		system.out.println(per.equals(per1));
		string str = "123";
		str.equals("123");
		str.hashcode();
		system.out.println(per.hashcode());
		system.out.println(per1.hashcode());
		system.out.println(per2.hashcode());
		system.out.println(per);
		system.out.println(per1);
	}
}
class person {
	string name;
	int age;
	int height;
	public person(string name, int age,int height)
	 {
		super();
		this.height = height;
		this.name = name;
		this.age = age;
	}
	/*@override
 public boolean equals(object obj)
 {
 if(this==obj){
  return true;
 }
 if(obj instanceof person){
  person per = (person)obj;
  if(this.name.equals(per.name)&&this.age==per.age){
  return true;
  }
 }
 return false;
 }*/
	//重写hashcode
	/*@override
 public int hashcode(){
 return name.hashcode()+age*31+height*31;
 }*/
	@override
	 public int hashcode()
	 {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + height;
		result = prime * result + ((name == null) ? 0 : name.hashcode());
		return result;
	}
	@override
	 public boolean equals(object obj)
	 {
		if (this == obj)
		  return true;
		if (obj == null)
		  return false;
		if (getclass() != obj.getclass())
		  return false;
		person other = (person) obj;
		if (age != other.age)
		  return false;
		if (height != other.height)
		  return false;
		if (name == null)
		 {
			if (other.name != null)
			  return false;
		} else if (!name.equals(other.name))
		  return false;
		return true;
	}
	@override
	 public string tostring()
	 {
		return "person[name="+name+",age="+age+"]";
	}
}

总结

以上就是本文关于java中object类实例分析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!