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. javaweb学习总结(四)——Http协议(转)

    转载自 http://www.cnblogs.com/xdp-gacl/p/3751277.html 一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传 ...

  2. 资源向导之 "APUE"

    APUE --- Advanced programming in the unix environment 这本书我看了好多遍.... 原因嘛, 第一次看到进程那里,看不懂了,前面基础没看好,从头再来 ...

  3. Hibernate学习笔记(五) — 多对多关系映射

    多对多关系映射 多对多建立关系相当于在第三张表中插入一行数据 多对多解除关系相当于在第三张表中删除一行数据 多对多改动关系相当于在第三张表中先删除后添加 多对多谁维护效率都一样.看需求 在实际开发过程 ...

  4. Unity打包android的apk与数据包.obb分离和apk签名

    那么,通过以上图片.我相信大多数人已经知道怎么创建了,apk签名比較简单,假设之前没有签名文件.那么选择图中的Create New Keystore然后在以下两个password框中输入passwor ...

  5. jstl常用语句

    1.select框中if选中,下面的语句实现从后台给过来一个category实体,如果category的categoryType为指定的值,则选中. <select class="fo ...

  6. 利用jquery.chained.remote实现多级级联

    多级级联一直是前端比较烦人的一个功能,本次用jquery的插件,chained.remote实现多级级联. 应用场景:至少有二个下拉框,下拉框的个数不定. 应用步骤: 1.引入js文件,当然这个插件需 ...

  7. idea将maven项目打包成war包的方式,以及使用war包

    打包WAR过程 首先对项目进行编译.然后执行以下步骤: 单击下图红色方框处  在IDEA右侧出现maven project选项  单击maven project选项,出现Spring MVC Basi ...

  8. CentOS 7 学习(三)配置Tomcat集群

    所谓集群,就是把多台服务器集合起来,对外提供一个接口访问,对用户来说完全透明,常用的办法就是前端放一个服务器,将用户请求分发到不同的服务器,大致有以下几种方案 1)采取DNS轮询:将用户的连接解析到不 ...

  9. idea和Webstorm上使用git和github,码云

    由于之前一直使用svn,现在项目使用git,顾根据网上找的学习资料,自己梳理了下,收获蛮多,这里做个记录,如果能帮助到您那是最好不过的. 1.大致步骤 使用工具:idea,github,码云 webs ...

  10. java随机生成验证码

    package com.yuyuchen.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; im ...