木卯先生的笔记---Object类
1.简介
Object类是在 java.lang 包下的一个类,它是所有类的父类(也就是所有类都是Object类的子类,如果定义一个类的时候,没有指定继承的类,默认的就是继承Object类),所以Object类中的所有方法,其他类都可以使用(继承就是这个样子)。在对象实例化的时候,最终找的父类就是Object类。
2.方法
2.1 toString()方法
public String toString() :返回该对象的字符串表示。该字符串的内容为"对象类型@内存地址值"
如果像下面例子中直接输出对象名(car),其实是调用了toString()方法。
Car bmw = new Car();
System.out.println(bmw);
如果希望改变toString()方法的功能,可以在测试类中覆盖重写(@Override)该方法。
2.2 equals()方法
public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。
这个“相等”的意思是指,两个对象是不是同一个对象,即是不是同一个内存地址,毕竟这是引用类型,所以对象名称其实是地址值。
当然了,如果希望有其他的功能,也可以覆盖重写该方法。如下所示:
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
Person p = (Person)obj;
return this.name.equals(p.name) && this.age == p.age;
}
}
3.Objects类
这是个工具类,在JDK 1.7 之后才有的,它在 java.util 包下面。
在比较两个对象的时候,如果是一个null对象来调用Object的equals()方法,那么程序就容易抛出空指针异常。
String s1 = null;
String s2 = "aaa"; /*boolean b = s1.equals(s2); 当s1为null,不可以调用equals方法
System.out.println(b);*/
而Objects类中euqals()方法解决了这个问题,代码如下:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
哈哈,java小白的学习笔记,如有错误,欢迎不吝赐教~
木卯先生的笔记---Object类的更多相关文章
- 木卯先生的笔记---Date类、DateFormat类和Calendar类
1.Date类 1.1 简介 Date类是 java.util 包下面的类,表示特定的瞬间,精确到毫秒. 1.2 方法 1.2.1 Date() 构造方法 public Date() :分配 Date ...
- 菜鸡的Java笔记 Object 类
Object 类 Object类 的主要作用 Object 类的常用方法 内容 虽然有了对象的向上转型,可以解决了参数的统一问题,但是 ...
- Java中Object类的方法笔记
今天看了下Object类的源码,以下是我看源码的一些笔记,欢迎有小伙伴来补充~ 首先列举下几个主要方法(面试被问到过的): equals:这个主要是用于比较对象的,Object中比较的是比较原始的,直 ...
- java学习笔记6--类的继承、Object类
接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...
- JDK1.8源码阅读笔记(1)Object类
JDK1.8源码阅读笔记(1)Object类 Object 类属于 java.lang 包,此包下的所有类在使⽤时⽆需⼿动导⼊,系统会在程序编译期间⾃动 导⼊.Object 类是所有类的基类,当⼀ ...
- Object C学习笔记14-分类(category)
在.NET中有一个非常带劲的特性,那就是扩展方法. 扩展方法使你能够向现有类型“添加”方法(包括你自定义的类型和对象噢),而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的 ...
- java笔记--超级类Object多线程的应用+哲学家进餐算法内部类与多线程结合
关于Object类中的线程方法: Object类是所有Java类的 父类,在该类中定义了三个与线程操作有关的方法,使得所有的Java类在创建之后就支持多线程 这三个方法是:notify(),notif ...
- 包装类、Object类——Java笔记(八)
包装类: 基本数据类型的包装类 基本数据类型 包装类 byte Byte short Short int Integer long Long char Character float ...
- Java笔记:与系统交互、系统相关的类,Object类
1.程序与用户交互 (1)运行一个Java程序的时候要给它提供一个main方法入口,这边分析一下这个main方法的签名public static void main(String[] args);pu ...
随机推荐
- The Python Standard Library
The Python Standard Library¶ While The Python Language Reference describes the exact syntax and sema ...
- PAT甲级——A1118 Birds in Forest【25】
Some scientists took pictures of thousands of birds in a forest. Assume that all the birds appear in ...
- 求一个n!中尾数有多少个零
题目描述: 输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2 输入描述: 输入为一行,n(1 ≤ n ≤ 1000) 输出描述: 输出 ...
- 用 Docker 搭建Sha--dow--sock--s 笔记
首先得找一台海外服务器,该服务器一定要在海外. 一.在https://my.vultr.com/购买一台海外服务器,亲测选美国Miami速度最稳: 二.系统我选了CentOS 7 x64,在CentO ...
- grep 强大的文本搜索工具
1.grep -r "History folder does't exist:" * :中间是要搜索的文本,* 表示全部显示出来
- vue倒计时:天时分秒
data数据定义 data () { return { curStartTime: '2019-07-31 08:00:00', day: '0', hour: '00', min: '00', se ...
- Linux下常用操作
************************ 镜像操作 ************************************* screen -s name 新建 screen -r name ...
- 实现Linux下不间断聊天和退出处理
实现Linux下不间断聊天和退出处理
- 即将开源 | 2亿用户背后的Flutter应用框架Fish Redux
背景 在闲鱼深度使用 Flutter 开发过程中,我们遇到了业务代码耦合严重,代码可维护性糟糕,如入泥泞.对于闲鱼这样的负责业务场景,我们需要一个统一的应用框架来摆脱当下的开发困境,而这也是 Flut ...
- this指针/常函数、常对象
this指针引入 类中对象的成员变量和成员函数是分开存储的,sizeof(空class) = 1,另外示例中涉及到字节对齐的问题,double本身的字节为8,int为4,由于字节对齐,int也为8,所 ...