java记录-Object类

Object是所有类的祖宗,所有对象都继承了Object类的方法

toString()

把当前对象给出一种字符串形式的表示,很底层的转字符串方法

这个方法在很多内置的打印方法和转字符串方法中都会被自动调用
System.out.println内部调用了String.valueOf,
String.valueOf内部调用了toString

所有的对象继承的祖宗toString()方法只会返回它的地址(如下)

test.javaJilu@3f3afe78

不过你自己定义的类可以重写toString(),定义它转字符串的形式

class Student{
	String name = "小明";
	int age = 14;
	@Override
	public String toString(){
		return "name:"+this.name+"age:"+String.valueOf(age);
	}
}

之后就算不主动调用toString(),在System.out.print的时候也会调用你重写的toString从而改变结果

equals()

比较两个对象
底层Object给出的equals很简单,就是用==比较两个对象地址
在这里插入图片描述

但你可以为自己的类重写equals方法,String类就重写了equals方法:

在这里插入图片描述
源代码如下,它可以去写一个equals(String str)但是它没有,它是方法签名原封不动地重写了Object的方法。因为前者是重载而后者是重写,如果产生以下情况你重载的这个equals(String str)就不会被用到,实际调用的还是Object的equals:

用一个自己的myString代替一下
class myString{
    String str = null;
    myString(String s){
        str = "s";
    }

    public boolean equals(myString s){
        return this.str.equals(s.str);
    }
}

Object str1 = new myString("一号");
myString str2 = new myString("一号");
myString str3 = new myString("一号");
System.out.println(str1.equals(str2));//False
System.out.println(str2.equals(str1));
System.out.println(str2.equals(str3));

输出如下:
false
false
true

解释:

  1. Object类型的str1只能调用Object的equals去对比str2的地址,自然返回false
  2. myString类型的str2只重载了一个接收myString参数的equals,str2在使用equals比较str1时没法用这个重载的equals,还是只能去找参数为Object类型的equals,就是Object的equals,所以也返回false
  3. myString类型的str2去比较同为myString的str3,那可以成功调用到自己重载的equals,返回true

getClass()

返回这个对象的类名,当然是带包名的,类名用$分割

str2.getClass();
"class test.javaJilu$1myString"

hashCode()

返回对象的哈希码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值