Java学习笔记18(Object类)
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.9(java学习笔记)object类及toString()与equals()方法
object类 java中objec是所有类公共的父类,一个类只要没有明显的继承某一类,那么它就是继承object类. 例如 class Person {......};和class Person e ...
- Java学习笔记之——Object类
所有类的祖先 如果一个类没有显式继承,则继承Object 每一个类都直接或间接的是Object的子类 相关API: protected Objectclone() 创建并返回此对象的副本. boole ...
- java学习笔记7--抽象类与抽象方法
接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:Object类
class Demo{ // 定义Demo类,实际上就是继承了Object类 }; public class ObjectDemo01{ public static void main(String ...
- Java学习笔记16---抽象类与接口的浅显理解
抽象类是由abstract修饰的类,定义方式如public abstract class A{...}. 接口由interface修饰,定义方式如public interface B{...}. 抽象 ...
- 【原】Java学习笔记031 - 常用类
package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ...
- 【原】Java学习笔记021 - Object
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 类 Object: ...
- Java学习笔记day06_自定义类_ArrayList
1.自定义类class 使用类的形式, 对现实中的事物进行描述. 类是引用数据类型. 事物: 方法,变量. 方法:事物具备的功能. 变量:事物的属性. 格式: public class 类名{ //属 ...
- Java学习笔记(2)——有关类
Java类的高级特性: {Java管理文件机制:类包. 同一个包中的类互相访问时,可以不指定包名. 同一个包中的类不必存放在同一位置,如com.lang.class1和com.lang.class2可 ...
随机推荐
- 如何做更好的Android驱动project师
随着智能手机的飞跃发展,特别是Android智能机的爆炸性发展,Android驱动project师是越来越受欢迎的一个职位,并且是一个非常值得人期待的职位,由于可能你參与研发的一款手机就能改变 ...
- 启用oracle 11g自己主动收集统计信息
今天接到朋友数据库一个case,在DBCA建库时,把自己主动收集统计信息的选项去掉了,数据库执行半年没有收集过统计信息.如今要启用方法例如以下: exec DBMS_AUTO_TASK_ADMIN.E ...
- 二.java下使用RabbitMQ实现hello world
上一篇文章介绍了windows环境下的安装和配置rabbitMQ,具体戳这边,一.windows环境下rabbit的的安装和配置. 现在我们可以着手编写hello world程序了,一窥RabbitM ...
- MPSOC之8——启动及错误处理
有了BOOT.BIN(fsbl+pmu+atl+uboot).uImage.uramdisk.image.gz,dtb文件,就可以启动了.把上述文件统统拷贝到SD卡,并设置开发板为SD卡启动. 0. ...
- MPSOC之1——overview、开发板、工具
1.MPSOC overview MPSOC是xilinx公司推出的新一代集成SOC,比ZYNQ厉害了一个等级. 熟悉一个芯片,不能一头扎进详细的数据手册,应该从overview开始大概了解,然后浏览 ...
- Android快速实现上传项目到Github
本文为skylinelin原创,转载请注明出处! 一.简介 现在在网上浏览关于Git的文章,基本上都是使用命令行(Git Bash),命令行效率是很高的,但是有一定的复杂性,现在我们看如何用AS来讲项 ...
- Linux权限分析
我看过网上的一些有关Linux的权限分析,有些说的不够清楚,另外一些说的又太复杂.这里我尽量简单.清楚的把Linux权限问题阐述明白,Linux权限没有那么复杂. Linux权限问题要区分文件权限和目 ...
- ABP .Net Core API和Angular前端APP集成部署
前言:在ABP官网(https://aspnetboilerplate.com)生成的.Net Core + Angular项目前后端是两个独立的项目,我们可以分开部署,也可以将前端和Web API一 ...
- python写入文本报错TypeError: expected a string or other character buffer object
今天用python写入文本, file_object2 = open('result.txt', 'w') file_object2.write(bookid_list) file_object2.c ...
- 开发过程遇到的bug
1.transition和display的冲突: 解决方法:1)使用visibility:2)使用js的setTimeout使动画延迟:3)可以改变高度: 2.form表单提交和js中的提交冲突 解决 ...