类的始祖Object
一、概述
Object时java中顶级父类,也是唯一没有父类的类;它是整个java中最基本的类,在java中所有的类都默认继承了Object。
二、重要方法
1、clone方法
克隆出一个新的对象。
使用clone方法时的注意点:
- 在使用这个方法的时候,需要抛出一个异常;
- 需要对应的类实现Cloneable接口;
- clone使用protected修饰,需要注意其使用范围;只能在本类、继承子类和同包类中使用;由于Object和子类不同包,相当于只能在子类中使用了。
2、finalize方法
通知GC进行垃圾对象的回收,但是GC不一定会执行,通知完成之后GC会进行内存的扫描。
3、hashCode方法
计算对象的哈希码。哈希码时根据哈希散列算法计算出来的。一般人为的认为每个对象的哈希码是唯一的。
4、toString方法
将对象转化为字符串来进行展示。如果直接打印一个对象,那么会默认调用对象的toString方法。
5、getClass方法
获取对象的实际类型而不是声明类型。
6、equals方法
判断两个对象是否相等。如果不重写,那么默认判断两个对象的地址是否一致。实际开发中旺旺需要重写。重写步骤如下:
- 判断地址是否一致;
- 判断参数是否为空;
- 判断类型是否一致;
- 判断属性是否一致:如果是基本类型,可以直接比较;如果是引用类型则需要多个判断。
示例如下:
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的更多相关文章
- 把一个类(或者Object)转换成字典
直接上代码:把一个类转换成object,然后在转换成字典 internal static IDictionary<string, string> GetDictionary(this ob ...
- python定义类()中写object和不写的区别
这里需要说明一下: python3中,类定义默认继承object,所以写不写没有区别 但在python2中,并不是这样 所以此内容是针对python2的,当然python3默认继承,不代表我们就傻乎乎 ...
- Python中新式类 经典类的区别(即类是否继承object)
首先什么是新式类 经典类呢: #新式类是指继承object的类 class A(obect): ........... #经典类是指没有继承object的类 class A: ........... ...
- Java类的设计----Object 类
Object类 Object类是所有Java类的根父类如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类 public class Person { ... } 等价于: ...
- Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型
任何类都是object类的子类 用object对象接收数组 object类的向上向下转型
- Java类的根Object
一.Object类介绍 Object全名java.lang.Object,java.lang包在使用的时候无需显示导入,编译时由编译器自动导入.Object类是类层次结构的根,Java中所有的类从根本 ...
- 最终父类【根类】:Object类&Objects类
一.java.lang.Object类 1.Object类介绍 Object类是所有类的父类.一个类都会直接或间接继承自该类: 该类中提供了一些非常常用的方法! 2.toString()方法 A: ...
- 13_Python的面向对象编程-类class,对象object,实例instance
1.面向对象概述 1.类是用来描述对象的工具,把拥有相同属性和行为的对象分为一组 2.对象是由类实例化出来的一个具体的对象 属性: 对象拥有的名词,用变量表示 ...
- 关于匿名类无法转换为object
缘由,不能在Razor中使用匿名类, 先事先封装了一个方法,用于Razor给cshtml模板返回页面. 在ashx一般处理程序中,是这样调用的 匿名类的格式如下:(只看格式,不看具体内容) 调用这样 ...
随机推荐
- 三 传递包装pojo&ResultMap
传递包装pojo: 将实体类对象封装在QueryVo类中进行操作 mapper接口: mapper映射文件: 测试: ResultMap的使用: type:映射成的pojo类型 id:resultMa ...
- jqGrid不支持IE8的解决办法
参考:https://blog.csdn.net/tarataotao/article/details/10376657
- 使用U盘安装Linux最美桌面发行版Elementary OS 及常用开发环境配置(JDK,Redis,MySQL,Docker,IDEA,STS)
前言 假期在家无聊,刚好把六年前的一台笔记本电脑利用起来,原来电脑虽然说配置说不上古董机器,但是运行win系统感觉还是不流畅,所幸给换成Linux桌面版系统,在网上查阅了很多,Linux桌面系统要么推 ...
- windows远程桌面不显示本地磁盘
\\tsclient\D 在资源管理器输入上面的内容就可以访问本地的D盘,但是前提是连接远程桌面的时候设置了可以访问本地D盘.
- Day3-R-Aggressive cows POJ2456
Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are locat ...
- acid-事务的原子性、一致性、隔离性、持久性
博客分类: oracle-dba 原子性 多个事情组成一个单元,要么同时成功或失败,不能只运行其中一个 一致性 事务处理要将数据库从一种状态转变为另一种状态. 一旦提交了修改数据,那么其它人读 ...
- Nginx反向代理实现负载均衡配置图解
Nginx反向代理实现负载均衡配置图解 [导读] 负载均衡配置是超大型机器需要考虑的一些问题,同时也是数据安全的一种做法,下面我来介绍在nginx中反向代理 负载均衡配置图解,大家可参考本文章来操作. ...
- 闲谈“如何优化SSH框架的项目”
使用struts框架的好处之一就是所有action类继承一个基类,将访问控制在基类中处理.2.所有的action类都继承自baseaction,一个资源对应一个action类.1.实现一个继承自str ...
- HiBench成长笔记——(5) HiBench-Spark-SQL-Scan源码分析
run.sh #!/bin/bash # Licensed to the Apache Software Foundation (ASF) under one or more # contributo ...
- 洛谷 P1929 迷之阶梯
题目传送门 解题思路: f[i]表示跳到第i层的最少移动次数,如果可以从下面一级跳上来,那么直接跳上来,如果跳不上来,那就往后退,退到不能退或能跳上第i层 AC代码: #include<iost ...