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(包含链接).
分享到:
相关推荐
《菜鸟Java葵花宝典2017-2018》是一本专注于Java学习与面试的资源集合,旨在帮助初学者系统地掌握Java编程语言并为面试做好充分准备。这本书可能涵盖了Java的基础知识、进阶特性、设计模式以及常见面试问题等内容。...
### SAP自学学习笔记知识点概述 #### 一、配置总体框架 **1.1 系统环境** - **定义**: 指的是SAP系统的基本硬件和软件环境。 - **重要性**: 正确配置系统环境是确保SAP系统正常运行的基础。 - **涉及内容**: - ...
- 面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态三大特性。 - 平台无关性:通过Java虚拟机(JVM)实现了“一次编写,到处运行”的目标。 - 健壮性:具有自动垃圾回收功能,减少了内存泄漏等问题。...
综上所述,面对JAVA面试,面试者应当注重技术基础的学习与积累,并在此基础上提升自己的综合能力,包括但不限于沟通技巧、团队协作能力等。同时,了解当前市场的薪资水平和公司招聘偏好有助于更好地定位自己,为未来...
内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联函数,this指针,静态成员...
### Java学习资源汇总:从入门到精通 #### 引言 随着互联网技术的快速发展与迭代,Java作为一门经典的编程语言,依然占据着重要的地位。对于初学者或是希望提升技能的人来说,选择合适的在线学习资源至关重要。...
- **面向对象编程**:Java是一种面向对象的语言,系统的核心会涉及类的设计,包括学生类、班级类、教师类等,每个类都会有自己的属性和方法。 - **控制结构**:如if-else语句、switch-case、for、while循环用于...
这份"java学习1-3课笔记"涵盖了初学者入门Java的基础知识,由张孝祥老师的课程内容整理而成,适合对编程感兴趣的菜鸟们作为学习参考资料。 1. **Java简介**: Java是由Sun Microsystems(现为Oracle Corporation的...
根据提供的文件信息,我们可以推断出这是一套关于Android Studio 1.3.1的教学视频资料,主要面向初学者到进阶用户。接下来,我们将基于这些信息深入探讨相关的知识点。 ### Android Studio 1.3.1简介 Android ...
标题中的“20210808-银河证券-交通运输行业:菜鸟网络业绩表现持续向好,京东航空获批筹建”表明这是一份由银河证券发布的关于2021年8月8日交通运输行业的研究报告,重点提及了菜鸟网络的业务发展情况以及京东航空的...
此外,“对刚学OO思想想俺一样的菜鸟或许有那么点帮助”暗示源码可能包含了一些面向对象编程(Object-Oriented Programming, OOP)的基础应用,如继承、封装和多态性。 【标签】:“winForm程序”说明这个游戏是...
Java提供了两个主要的技术开发平台:Java SE(标准版)用于桌面应用程序的开发,而Java EE(企业版)则针对网络程序和企业级应用。 要开始学习Java,你需要安装JDK(Java Development Kit),并配置相应的环境变量...
- **学习途径**:建议使用在线教程(如菜鸟教程)进行入门学习。 **1.2 SQL基础** - **学习目标**:熟悉SQL语法,能够熟练地进行数据查询和简单的数据分析。 - **学习途径**:同样可以通过在线教程或书籍进行学习...
- **类与对象**:理解类与对象的基本概念及其关系,学会定义类和创建对象。 - **继承**:掌握类继承的概念,学会使用extends关键字实现继承。 - **封装**:了解封装的作用,掌握private、public、protected等访问...
- **适用对象**:主要面向编程初学者和技术爱好者。 - **应用场景**: - **自学**:利用runoob提供的资源进行自我提升。 - **备课**:教师可以借助这些资源准备课程材料。 - **项目参考**:开发者在项目开发过程...
- **面向对象编程**:Java是一种面向对象的编程语言,五子棋游戏的实现将涉及到类的设计,如棋盘类、棋子类、玩家类等。 - **图形用户界面(GUI)**:游戏通常需要一个友好的用户界面,Java中的Swing或JavaFX库...