《疯狂java讲义2》读书笔记——处理对象

        java对象都是Object类的实例,均可直接调用该类中定义的方法,这些方法提供了处理java对象的通用方法。java

打印对象和toString方法程序员

        

class  Person
{
	private String name;
	public Person(String name)
	{
		this.name = name;
	}
	public void info()
	{
		System.out.println("此人名为:"+name);
	}
}
public class PrintObject
{
	public static void main(String[]args)
	{
		//建立一个person对象,将之赋给p变量
		Person p = new Person("孙悟空");
		//打印p所引用的Person对象
		System.out.println(p);
	}
}

运行上面程序后可能输出不一样的结果:@符号后的6位十六进制数字可能发生改变。this

        toString()方法是Object类里的一个实例方法,全部的java实例都是Object类的子类,因此全部的java对象都具备toString()方法。code

        当java对象和字符串进行链接运算时,系统自动调用toString对象方法的返回值 进行运算。toString方法是一个“自我描述”的方法,一般用于实现一个功能:当程序员直接打印该对象时,系统将会输出该对象的"自我描述"信息,来告诉外界该对象具备的状态信息。对象

        该方法老是返回该对象实现类的”类名+@+hashCode“值,这个返回值并不能真正实现"自我描述"的功能,须要重写toString方法。字符串

==和equals方法hash

        ==运算符判断两个基本类型变量的值相等时,返回true;判断引用类型变量时,必须指向同一个对象才返回true。class

        equlas方法是一个实例方法,因此全部引用变量均可调用该方法来判断是否与其余引用变量相等。String已经重写了equals()方法,因此只要两个字符串包含的字符序列相同就返回true。正确的重写equals方法应该知足下列条件:变量

》自反性:对任意x,x.equals(x)必定返回true;引用

》对称性:对任意x,y,z,若是x.equals(y)返回ture,y.equals(z)必定返回true。

》传递性:对任意x和y,若是对象中用于 等价比较的信息没有改变,那么不管调用x.equeals(y)多少次,返回的结果应该保持一致,要么 一直是true或fals。

》对任何不是null的x,x.equals(null)必定返回false。

这里涉及到反射,能够参考反射方面的知识。

相关文章
相关标签/搜索