Object类是Java中最顶层的父类,所有类都是它的子类,接口不继承它

Object类中的方法:

官方资料:boolean equals(Object obj)  指示其他某个对象是否与此对象“相等”

示例:

package demo;

public class Person extends Object {
private String name;
private int age; public Person() {
} public Person(String name, int age) {
this.name = name;
this.age = age;
} // 重写父类的equals方法
// 源代码相同,equals是比较两个对象的内存地址 public boolean equals(Object obj) {
return this == obj;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}
package demo;

public class TestEquals {
public static void main(String[] args) {
//Person类继承了Object类,继承了父类的方法
Person p1 = new Person("张三", 18);
Person p2 = new Person("李四", 20);
boolean b1 = p1.equals(p2);
System.out.println(b1);//输出false
p1 = p2;
boolean b2 = p1.equals(p2);
System.out.println(b2);//输出true }
}

不过发现比较内存地址是没有意义的,为了满足一些需求,我们可以重写下equals方法:

package demo;

public class Person extends Object {
private String name;
private int age; public Person() {
} public Person(String name, int age) {
this.name = name;
this.age = age;
} // 重写父类的equals方法,自己定义比较方式
// 比较两个对象的age是否相同 public boolean equals(Object obj) {
// 处理传入的是本身的情况
if (this == obj) {
return true;
}
// 处理传入空的情况
if (obj == null) {
return false;
}
// 多态中不能调用子类的特性,所以需要向下转型
// 加入instanceof为了防止风险,因为Object是顶层父类,防止传入其他的类
if (obj instanceof Person) {
Person p = (Person) obj;
return this.age == p.age;
} else {
return false;
}
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}
package demo;

public class TestEquals {
public static void main(String[] args) {
//Person类继承了Object类,继承了父类的方法
Person p1 = new Person("张三", 20);
Person p2 = new Person("李四", 20);
boolean b1 = p1.equals(p2);
System.out.println(b1);//输出true
}
}

toString方法:

官方资料:String toString() 返回该对象的字符串表示

继续上边的Person类写个示例:

package demo;

public class TestToString {
public static void main(String[] args) {
Person p1 = new Person("张三", 18);
String s1 = p1.toString();
System.out.println(s1);
System.out.println(p1);
}
}
/*
这里两个输出相同:
demo.Person@2cdb03a1
demo.Person@2cdb03a1 所以我们发现,输入语句中如果写的是一个对象,默认调用对象的toString方法
*/

其实得到内存地址没有什么实际意义,为了满足一些需求,所以我们重写下toString方法:

package demo;

public class Person extends Object {
private String name;
private int age; public Person() {
} public Person(String name, int age) {
this.name = name;
this.age = age;
} //重写父类的toString方法
public String toString(){
return this.name+this.age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}
package demo;

public class TestToString {
public static void main(String[] args) {
Person p1 = new Person("张三", 18);
String s1 = p1.toString();
System.out.println(s1);
System.out.println(p1);
}
}
/*
这里两个输出总是相同:
张三18
张三18 我们发现,输入语句中如果写的是一个对象,总是默认调用对象的toString方法
*/

Object还有其他方法,有些不常用,有些会在后边提到

Java学习笔记18(Object类)的更多相关文章

  1. 1.9(java学习笔记)object类及toString()与equals()方法

    object类 java中objec是所有类公共的父类,一个类只要没有明显的继承某一类,那么它就是继承object类. 例如 class Person {......};和class Person e ...

  2. Java学习笔记之——Object类

    所有类的祖先 如果一个类没有显式继承,则继承Object 每一个类都直接或间接的是Object的子类 相关API: protected Objectclone() 创建并返回此对象的副本. boole ...

  3. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...

  4. 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:Object类

    class Demo{ // 定义Demo类,实际上就是继承了Object类 }; public class ObjectDemo01{ public static void main(String ...

  5. Java学习笔记16---抽象类与接口的浅显理解

    抽象类是由abstract修饰的类,定义方式如public abstract class A{...}. 接口由interface修饰,定义方式如public interface B{...}. 抽象 ...

  6. 【原】Java学习笔记031 - 常用类

    package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ...

  7. 【原】Java学习笔记021 - Object

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 类 Object: ...

  8. Java学习笔记day06_自定义类_ArrayList

    1.自定义类class 使用类的形式, 对现实中的事物进行描述. 类是引用数据类型. 事物: 方法,变量. 方法:事物具备的功能. 变量:事物的属性. 格式: public class 类名{ //属 ...

  9. Java学习笔记(2)——有关类

    Java类的高级特性: {Java管理文件机制:类包. 同一个包中的类互相访问时,可以不指定包名. 同一个包中的类不必存放在同一位置,如com.lang.class1和com.lang.class2可 ...

随机推荐

  1. 用js解析XML文件,字符串一些心得

    解析XML文件遇到的问题 今天秦博士叫我解析一下XML文件,将里面的所有的X坐标Y坐标放在一个数组里面然后写在文档里让他进行算法比对,大家都知道了啦,解析XML文件获取里面的坐标数据什么的,当然是用前 ...

  2. Cocos游戏引擎,让小保安成就大梦想

    秦丕胜是大连的一位保安.与非常多自学成才的人一样,2010年,在考上日照职业技术学院一年后便退了学. 因为没有高学历.加上喜欢自由,他来到了大连成为了一名保安.从高中開始,秦丕胜就酷爱代码,他曾自豪地 ...

  3. Emoji表情符号录入MySQL数据库报错的解决方式

    前言:手机app应用评论的时候,恢复表情符号.提示失败.​1,查看tomcat后台日志,核心报错信息例如以下:  Caused by: java.sql.SQLException: Incorrect ...

  4. Android之本地相冊图片选取和拍照以及图片剪辑

    转载请注明出处:http://blog.csdn.net/loveyaozu/article/details/51160482 相信有非常多Android开发者在日常开发中,因为项目需求,须要我们的A ...

  5. Java学习之道:Java操作Excel之导出下载

    页面放置一个button进行点击导出事件 <h:commandLink target="_parent" value="导出"            ac ...

  6. springboot+rabbitmq例子

    demo目录 贴代码 1.ProducerConfig.java package com.test.config; import org.springframework.amqp.core.Bindi ...

  7. [转载]ArchLinux 添加 archlinuxcn 源 密钥错误

    http://www.jianshu.com/p/8ed688b0a096 杜龙少 正在检查密钥环里的密钥 [######################] 100% 正在下载所需的密钥...... ...

  8. Asp.Net Web API(六)

    Asp.Net Web API不可以需要IIS.可以自己在主机上承载一个Web API 创建WebAPI.Server项目 创建一个控制器项目的服务端 在Nuget中添加Microsoft.AspNe ...

  9. 【二十五】cookie与session学习总结

    一:cookie 1.创建cookie 关键字:setcookie 用于保存cookie 原理:当浏览器访问cookie.php页面时,我们的服务器就会以set-cookie的方式将cookie信息回 ...

  10. 解读JavaScript原型链

    var F = function(){}; F.prototype.a = function(){}; Object.prototype.b = function(){}; Function.prot ...