Object类
什么是Object类?
Object类是所有Java类的祖先,每个类都使用 Object 作为超类,所有对象(包括数组)都实现这个类的方法Object类是类层次结构的根,Object类是Java中唯一没有父类的类。其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。
Object类方法有哪些?
toString方法
首先toString()方法是Object根类的一个默认方法
咱试一试输出一下默认的方法
//重写toString方法
package me.tostring;
public class ToString{
public static void main(String[] args){
Dog jim=new Dog();
System.out.println("Dog "+jim);//直接在里面jim,默认等于jim.toString()
}
}
class Dog{
}
然后编译后运行,输出结果为:/*输出:
Dog me.tostring.Dog@545ec940
*/
为什么会是这样呢?既然是父类Objcet定义的方法,那就去文档查看说明
说明中看出了两点:1.默认的方法是返回 如上的格式。2.推荐子类根据需求重写这个方法
那就重写试一试咯,以防在Override时候书写出错,直接在文档copy方法声明肯定错不了~
//重写toString方法
package me.tostring;
public class ToString{
public static void main(String[] args){
Dog jim=new Dog();
System.out.println("Dog "+jim);
/*输出:
Dog me.tostring.Dog@545ec940
*/
}
}
class Dog{
//重写方法
@Override
public String toString(){
return "这个方法被我重写了";
}
}
其中
@Override//这是什么意思?-意思告诉编译器下面的方法我是要重写父类的,你检查严格点,不是重写(拼写错误等等)会编译报错
编译运行
Dog 这个方法被我重写了
成功Override这个方法。
equals方法的运用与重写
文档中关于equals的解释
equals()--和老婆买猫的故事
今天和老婆去逛街,正好看见猫,长得和加菲猫差不多,看着合适准备入手,和小饭谈好价格交了押金然后取钱去了
class Cat{
//猫的一些特征
private String color;
private String height;
private String weight;
Cat(){}
Cat(String color,String height,String weight){
this.color=color;
this.height=height;
this.weight=weight;
}
}
预订好的猫
Cat huahua=new Cat("red","2","3");
然后回来了,坑爹小贩把猫卖给别人了,老婆当然不愿意了,小贩说还有一直一模一样的猫,您看着应该也合适
Cat ruhua=new Cat("red","2","3");
合适不?看看咯
System.out.println(huahua == ruhua);//输出false
//按老婆这个算法买一万只也不一样,== 判断依据是引用的指向空间地址是否一样啊
这样比较一万只猫也不一样啊,换个方式比较咯,那就用Object的提供的equals()方法吧
System.out.println(huahua.equals(ruhua));//输出false,还是不一样哪里出问题了?
哪里问题?看文档如上,原来equals默认按是否指向同一个对象为依据啊~,那就只有重写咯
@Override//生命老子要改写了,编译器你注意着点
//看完文档直接复制声明,以防出错,双保险
public boolean equals(Object obj){
//第一种情况,空引用,什么都不是肯定返回false啊
if(obj == null) return false;
//第二种情况,首先你是猫,我再看你颜色身高体重一样不
else if(obj instanceof Cat){
//既然是猫就转换类型
Cat mimi=(Cat)obj;
//判断身高体重颜色是不是一样,一样我就买
if(this.color==mimi.color&&this.height==mimi.height&&this.weight==mimi.weight){
return true;
}
//身高体重不一样我就认为和刚刚那一只不一样,
else return false;
}
//其他情况可能是什么老虎啊什么的当然不买咯
else return false;
}
这回看你还不一样不?这回趁心如意了,只有外观差不多都是加菲猫~
System.out.println(huahua.equals(ruhua));//这会儿一样了把,老婆高兴了吧
高高兴兴回家了。
源码
//陪老婆买猫
package me.equals;
public class Equals{
public static void main(String[] args){
Cat huahua=new Cat("red","2","3");
//看中了猫交押金回家拿钱,结果猫给人先买走了,小贩说有只一模一样的啊
Cat ruhua=new Cat("red","2","3");
//老婆说看一样不一样就买
System.out.println(huahua == ruhua);//输出false
//按老婆这个算法买一万只也不一样,== 判断依据是引用的指向空间地址是否一样啊
//那就用Object的提供的equals()方法吧
System.out.println(huahua.equals(ruhua));//输出false,还是不一样哪里出问题了?
//查文档,原来默认的equals()方法坑爹啊,也是是否指向同一对象为依据
//那就改写这个方法咯
System.out.println(huahua.equals(ruhua));//这会儿一样了把,老婆高兴了吧
}
}
//猫类
class Cat{
//猫的一些特征
private String color;
private String height;
private String weight;
Cat(){}
Cat(String color,String height,String weight){
this.color=color;
this.height=height;
this.weight=weight;
}
@Override//生命老子要改写了,编译器你注意着点
//看完文档直接复制声明,以防出错,双保险
public boolean equals(Object obj){
//第一种情况,空引用,什么都不是肯定返回false啊
if(obj == null) return false;
//第二种情况,首先你是猫,我再看你颜色身高体重一样不
else if(obj instanceof Cat){
//既然是猫就转换类型
Cat mimi=(Cat)obj;
//判断身高体重颜色是不是一样,一样我就买
if(this.color==mimi.color&&this.height==mimi.height&&this.weight==mimi.weight){
return true;
}
//身高体重不一样我就认为和刚刚那一只不一样,
else return false;
}
//其他情况可能是什么老虎啊什么的当然不买咯
else return false;
}
}
equals()--String类默认重写
String类默认已经对由Object继承过来的equals()方法重写了,怎么样?查文档就知道了
文档说明很明确,返回true的前提是:
参数不为null
这个参数是个String对象并且存储的字符串和调用者存储的字符串一模一样
这两个成立就可以返回true了。
作者:YangGan
出处:http://blog.csdn.net/incyanggan
本文基于署名
2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).
分享到:
相关推荐
内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联函数,this指针,静态成员...
20210808-银河证券-交通运输行业:菜鸟网络业绩表现持续向好,京东航空获批筹建.rar
20210808-银河证券-交通运输行业:菜鸟网络业绩表现持续向好,京东航空获批筹建.pdf
java笔记-从菜鸟到j2se j2ee高手之路
股市菜鸟必读----“笑傲股市”学习笔记.pdf
JAVA入门级笔记,满满当当适合刚学习用JAVA编程的程序员,不死记硬背靠理解走遍天下
java菜鸟学习第一步-java基础语法,学习一门语言先从语法开始学起,学好基础才能深入的学习编程
菜鸟入侵--利用资源搜索动画教程,内附有详细的使用说明 菜鸟入侵之利用资源篇 菜鸟在入侵的时候,如果能充分利用现有的资源,那将对自己的入侵起很大的
本人刚接触C#,练练手做了个小程序,美化效果比较差,对刚学OO思想想俺一样的菜鸟或许有那么点帮助,希望大家多多指教
Python基础语法-菜鸟教程-函数⽤法:input()和raw_input() 1.input()和raw_input()⽤法 (1).input() 1)⽤法解释 def input(*args, **kwargs): # real signature unknown """ Read a string from standard input....
java必备-菜鸟的最爱-正则表达式.docx
这本笔记主要记录了我之前面试遇到的问题以及我在网上整理的一些资料 主要是面向 junior 级别的 就是我们这些小菜鸟啦 ~ ---------------------------------------------------- 本 PDF 基于开源文档,目录书签齐全...
菜鸟的SAP自学学习笔记;对SAP初学者很有帮助喔!为了解决问题却也带来了相当大的收益,接触了那些以前不会考虑的问题领域,结识了一些之前根本想象不到的人,这些都是那么重珍贵。
Java基础知识笔记详细版-菜鸟翻阅必备,可以作为坐地铁等公交的读物!
STM32菜鸟学习手册-罗嗦版 。
1 09:15:01 ------>Power:99% ----->Memory:18.24% ---->CPULoad:2.54 2 09:20:01 92% 17.86% 1.06 3 09:25:02 95% 18.58% 1.40 4 09:30:01 80% 19.04% 0.41 5 09:35:01 79% 19.18% 0.73 6 09:40:01 69% 19.13% 0.14...
python-note 菜鸟学习笔记
类、类属性、类方法的注释必须使用Javadoc规范 所有的抽象方法(包括接口中的方法)必须要用Javadoc注释、除了返回值、参数、异常说明外,还必须指出该方法做什么事情,实现什么功能。 所有的类都必须添加创建者和...
java 笔试面试题 Java 面试笔记 这本书其实是我的一本笔记 (还在整理中). 我是也是刚找到工作. 这本笔记主要记录了我之前面试遇到的问题以及我在网上整理的一些资料 主要是面向 junior 级别的 就是我们这些小菜鸟啦 ...
DAMA学习笔记-第01-17章细化第5章数据建模较多内容