一、概述

Object时java中顶级父类,也是唯一没有父类的类;它是整个java中最基本的类,在java中所有的类都默认继承了Object。

二、重要方法

1、clone方法

克隆出一个新的对象。

使用clone方法时的注意点:

  1. 在使用这个方法的时候,需要抛出一个异常;
  2. 需要对应的类实现Cloneable接口;
  3. clone使用protected修饰,需要注意其使用范围;只能在本类、继承子类和同包类中使用;由于Object和子类不同包,相当于只能在子类中使用了。

2、finalize方法

通知GC进行垃圾对象的回收,但是GC不一定会执行,通知完成之后GC会进行内存的扫描。

3、hashCode方法

计算对象的哈希码。哈希码时根据哈希散列算法计算出来的。一般人为的认为每个对象的哈希码是唯一的。

4、toString方法

将对象转化为字符串来进行展示。如果直接打印一个对象,那么会默认调用对象的toString方法。

5、getClass方法

获取对象的实际类型而不是声明类型。

6、equals方法

判断两个对象是否相等。如果不重写,那么默认判断两个对象的地址是否一致。实际开发中旺旺需要重写。重写步骤如下:

  1. 判断地址是否一致;
  2. 判断参数是否为空;
  3. 判断类型是否一致;
  4. 判断属性是否一致:如果是基本类型,可以直接比较;如果是引用类型则需要多个判断。

示例如下:

class User {
public int System = ;
private String userName;
private String password;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} @Override
public boolean equals(Object obj) {
//判断地址是否一致
if(this == obj) {
return true;
}
//判断是否为null
if(obj == null) {
return false;
}
//判断类型是否一致
if(this.getClass() != obj.getClass())
return false;
//判断对象的属性
User us = (User)obj;
//判断对象的名称
if(this.userName == null) {
if(us.userName != null) {
return false;
}
} else if(!this.userName.equals(us.userName)) {
return false;
}
//判断对象的密码
if(this.password == null) {
if(us.password != null) {
return false;
}
} else if(!this.password.equals(us.password)) {
return false;
} return true;
}
}
public class ObjectExer {
public static void main(String[] args) {
User us = new User();
us.setUserName("张三");
us.setPassword("");
User us1 = new User();
us1.setUserName("张三");
us1.setPassword("");
}
}

类的始祖Object的更多相关文章

  1. 把一个类(或者Object)转换成字典

    直接上代码:把一个类转换成object,然后在转换成字典 internal static IDictionary<string, string> GetDictionary(this ob ...

  2. python定义类()中写object和不写的区别

    这里需要说明一下: python3中,类定义默认继承object,所以写不写没有区别 但在python2中,并不是这样 所以此内容是针对python2的,当然python3默认继承,不代表我们就傻乎乎 ...

  3. Python中新式类 经典类的区别(即类是否继承object)

    首先什么是新式类 经典类呢: #新式类是指继承object的类 class A(obect): ........... #经典类是指没有继承object的类 class A: ........... ...

  4. Java类的设计----Object 类

    Object类 Object类是所有Java类的根父类如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类 public class Person { ... } 等价于: ...

  5. Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型

    任何类都是object类的子类 用object对象接收数组 object类的向上向下转型

  6. Java类的根Object

    一.Object类介绍 Object全名java.lang.Object,java.lang包在使用的时候无需显示导入,编译时由编译器自动导入.Object类是类层次结构的根,Java中所有的类从根本 ...

  7. 最终父类【根类】:Object类&Objects类

    一.java.lang.Object类 1.Object类介绍 Object类是所有类的父类.一个类都会直接或间接继承自该类: ​ 该类中提供了一些非常常用的方法! 2.toString()方法 A: ...

  8. 13_Python的面向对象编程-类class,对象object,实例instance

    1.面向对象概述 1.类是用来描述对象的工具,把拥有相同属性和行为的对象分为一组     2.对象是由类实例化出来的一个具体的对象         属性: 对象拥有的名词,用变量表示         ...

  9. 关于匿名类无法转换为object

    缘由,不能在Razor中使用匿名类, 先事先封装了一个方法,用于Razor给cshtml模板返回页面. 在ashx一般处理程序中,是这样调用的 匿名类的格式如下:(只看格式,不看具体内容) 调用这样 ...

随机推荐

  1. 三 MyBatis配置文件SqlMapCofing.xml(属性加载&类型别名配置&映射文件加载)

    SqlMapCofing:dtd,属性加载有固定的顺序Content Model properties:加载属性文件 typeAliases:别名配置 1 定义单个别名:不区分大小写 核心配置: 映射 ...

  2. TCP-IP ---三次握手和四次挥手来啦

  3. AJAX封装数据处理简单操作

    数据的封装处理主要展现在JS中,在页面里面引入封装的JS, "js/ajax.js" 简单封装将get和post方法都写入,get的方法和post的方法依然需要严格区分,包括typ ...

  4. 修bug感悟

    今天遇到了两个问题: 1. 使用 python 的 PIL 库读取照片的尺寸,对于有些图片,长宽和显示的效果相反,原因是照片中的 exif 有个属性 orientation,表示图片的翻转角度,详细说 ...

  5. WebRobot1.8.2网站多功能网络安全渗透检测工具

    新版介绍 最新版的Webrobot使用的是插件模式,插件存放在主程序目录下的plugin文件夹里,所有插件的配置文件及字典等其他文件也存放在这个文件夹内.我们需要用到哪个插件,只需要双击它便可打开,需 ...

  6. rinetd 进行转发

    目前云数据库 Redis 版需要通过 ECS 进行内网连接访问.如果您本地需要通过公网访问云数据库 Redis,可以在 ECS Linux 云服务器中安装 rinetd 进行转发实现. 在云服务器 E ...

  7. C++Review15_内存管理

    一.野指针 定义指针变量时最好初始化为NULL: 内存回收后,指针也用完了,这时候也需要及时将指针置为NULL: 指针就像野狗一样,为了防止它乱指,除了在使用期间,别的时候都需要置为NULL.这样它就 ...

  8. 跟 Task 有关的 Intent对象中设置的Flag

    FLAG_ACTIVITY_BROUGHT_TO_FRONT      这个标志一般不是由程序代码设置的,如在launchMode中设置singleTask模式时系统帮你设定. FLAG_ACTIVI ...

  9. 002.Oracle数据库 , 列别名

    /*Oracle数据库查询日期在两者之间*/ SELECT OCCUR_DATE as "我是一列" FROM LM_FAULT WHERE ( ( OCCUR_DATE > ...

  10. putty Linux 自动补全

    用putty连接Ubuntu16.04后,输入命令后按tab键,不自动补全,对上下键无历史命令,$符号顶格显示,无用户名.主机名, 这是由于默认用的sh,可以直接调用bash,进入bash: