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可 ...
随机推荐
- python用户管理系统
学Python这么久了,第一次写一个这么多的代码(我承认只有300多行,重复的代码挺多的,我承认我确实垃圾),但是也挺不容易的 自定义函数+装饰器,每一个模块写的一个函数 很多地方能用装饰器(逻辑跟不 ...
- 用HTML5实现的各种排序算法的动画比較
用HTML5实现的各种排序算法的动画比較 非常有意思,详见: http://www.webhek.com/misc/comparison-sort/
- linux下使用自带mail发送邮件(超简单)
linux 发邮件最简单的办法 ,也可以使用公司邮箱,需要安装mailx工具,mailx是一个小型的邮件发送程序. 具体步骤如下: 1.安装 [root@001 ~]# yum install mai ...
- spark-submit参数说明--standalone
示例: spark-submit [--option value] <application jar> [application arguments] 参数名称 含义 --master M ...
- 【ANT】时间戳
属性 说明 举例 DSTAMP 设置为当前日期,默认格式:yyyymmdd 20170309 TSTAMP 设置为当前时间,默认格式:hhmm 2007 TODAY 设置为当前日期,带完整的月份 Ma ...
- Function:html结构转字符串形式显示
//Html结构转字符串形式显示 支持<br>换行 function ToHtmlString(htmlStr) { return toTXT(htmlStr).replace(/\&am ...
- AVL树的单双旋转操作
把必须重新平衡的节点称为å.对于二叉树,å的两棵子树的高度最多相差2,这种不平衡可能有四种情况: 对å的左儿子的左子树进行插入节点(左-左) 对å的左儿子的右子树进行插入节点(左-右) 对å的右儿子的 ...
- DeepLearning.ai学习笔记(一)神经网络和深度学习--Week4深层神经网络
一.深层神经网络 深层神经网络的符号与浅层的不同,记录如下: 用\(L\)表示层数,该神经网络\(L=4\) \(n^{[l]}\)表示第\(l\)层的神经元的数量,例如\(n^{[1]}=n^{[2 ...
- tensorflow ckpt文件转caffemodel时遇到的坑
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...
- ArcGIS API for JavaScript 4.2学习笔记[21] 对3D场景上的3D要素进行点击查询【Query类学习】
有人问我怎么这个系列没有写自己做的东西呢? 大哥大姐,这是"学习笔记"啊!当然主要以解读和笔记为主咯. 也有人找我要实例代码(不是示例),我表示AJS尚未成熟,现在数据编辑功能才简 ...