object类的概述

object类是类层次结构的根类,每个类都使用object作为超类。

即每个类都直接或间接的继承object类。

object类中方法介绍

hashCode

public int hashCode():返回对象的哈希码值。

​ 注意:哈希值是根据哈希算法计算出来的一个值,该值与地址值有关,但不是实际的值。可理解为地址值。

getClass

public final Class<?> getClass():返回object运行时类,得到一个Class对
象。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象

在Class类中有getname()方法以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。

toString

public String toString():返回该对象的字符串表示。
toString方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode()) 源码:
public String toString() {
return getClass().getName() + "@" +
Integer.toHexString(hashCode());
}

ps:Integer.toHexString()为Integer类下一静态方法,

public static String toHexString(int i):以十六进制(基数 16)无符号

整数形式返回一个整数参数的字符串表示形式。

toString()方法返回的信息是无意义的。所以建议所以子类重写改方法。

重写的格式为:把所有成员变量值返回即可。

但这样不是最好,最好由编译器自动生成即可。

class Test{
int num;
//此处是自动生成的代码
@Override
public String toString() {
return "Test [num=" + num + "]";
}
}
class Main{
public static void main(String[] args){
Test t = new Test();
//测试直接输出对象的结果
System.out.println(t);
}
} out:
Test [num=0]

直接输出一个对象的名称,就是调用改对象的toString()方法。

equals

public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。
Object类中的源码:
public boolean equals(Object obj) {
return (this == obj);
}

通过查看Object类中的equals()源码可知在没有重写equals()的情况下,equals()方法是由"=="实现。

==:

基本类型:比较值是否相等。

引用类型:比较其地址值是否相等。

equals()方法,默认情况比较的是地址值,但是比较地址值意义不大,所以要重写改方法。

在方法重写时,比较对象的成员变量值是否相同

重写代码优化:提高效率,提高程序健壮性。

要想做到最好优化还是自动生成。(自动生成时会和hascode()方法一起生成。至于为什么这两个方法需要同时生成在集合中有解释)

class Test{
int num;
String sfa; @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + num;
result = prime * result + ((sfa == null) ? 0 : sfa.hashCode());
return result;
} @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Test other = (Test) obj;
if (num != other.num)
return false;
if (sfa == null) {
if (other.sfa != null)
return false;
} else if (!sfa.equals(other.sfa))
return false;
return true;
}
}

注:此为eclipse生成可能与idea生成的有所不同,但效果一样。

finalize

protected void finalize() throws Throwable :当垃圾回收器确定不存在
对该对象的更多引用时,由对象的垃圾回收器调用此方法。

clone

 protected Object clone() throws CloneNotSupportedException:创建并
返回此对象的一个副本。“副本”的准确含义可能依赖于对象的类。

Cloneable:如果一个类想要实现clone()方法,那么此类需要实现了Cloneable接口,以示Object.clone()方法合法的进行对该类的按字段复制。

Cloneable是一个标记接口,表明实现该接口的类可以实现对象的复制。

Javase之object类的概述的更多相关文章

  1. Java基础知识强化26(1):Object类之Object类的概述

    1.Object类 类Object是类层次结构的根类,每个类都使用 Object作为超类.所有对象(包括数组)都实现这个类的方法 每个类直接或者间接继承自Object类   2.Object类无参构造 ...

  2. 07 Object类,Scanner,Arrays类,String类,StringBuffer类,包装类

    Object类的概述:* A:Object类概述    * 类层次结构的根类    * 所有类都直接或者间接的继承自该类* B:构造方法    * public Object()    * 子类的构造 ...

  3. 开发工具、Object类(java基础知识十一)

    1.常见开发工具介绍 * A:操作系统自带的记事本软件 * B:高级记事本软件 * C:集成开发环境 IDE     * (Integrated Development Environment) *  ...

  4. Object类入门这一篇就够了!

    第三阶段 JAVA常见对象的学习 第一章 常见对象--Object类 引言: 在讲解Object类之前,我们不得不简单的提一下什么是API,先贴一组百度百科的解释: API(Application P ...

  5. Java中特殊的类——Object类

    Java中特殊的类--Object类 1.Object类的概述 Object类是java默认提供的类.Java中除了Object类,所有的类都是有继承关系的.默认会继承Object类,即所有的对象都可 ...

  6. Java 面向对象概述原理: 多态、Object类,转型(8)

    Java 面向对象概述原理: 多态.Object类,转型(8) http://docs.oracle.com/javase/tutorial/java/IandI/override.html Java ...

  7. Object类概述

    Object:类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.每个类都直接或者间接的继承自Object类. Object类的方法:public int hashCode() ...

  8. JavaSE基础知识(5)—面向对象(Object类)

    一.包 java.lang包,属于java中的核心包,系统默认导入的,不用手动导入该包中的类:Object.System.String.Integer等 1.包的好处 ①分类管理java文件,查找和管 ...

  9. JAVASE(十)面向对象:特性之多态性、Object类、代码块、关键字:static、final、父子类执行顺序

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.面向对象的特性之:多态性 多态性的理解:事物的多种形态 1.1 广义上多态性的体现:①方法的重写,重 ...

随机推荐

  1. java获取当前年份、月份和日期字符串等

    Java获取当前年份.月份和日期是通过Calendar类的实例对象来获取的. 首先创建一个Calendar类的实例对象,Calendar类属于java.util包. Calendar calendar ...

  2. SAP 表汇总

    SAP 表整理:VBKPF-预制凭证抬头表: VBKPF-预制凭证抬头表 VBKPF-预制凭证抬头表 VBSEG-预制凭证行项目表: VBSEG-预制凭证行项目表 VBSEG-预制凭证行项目表 VBS ...

  3. .net Core 使用AutoMapper

    在我们的项目中慢慢的要把数据库的实体模型和视图模型进行分离,防止被人拿到我们表字段.在学校的时候自己只是有将很多数据库模型,写成一个视图模型返回到前台. 首先我们把这两个包引入项目中去. 然后我们创建 ...

  4. 【Swift】WKWebView与JS的交互使用

    一.前言 近日,有朋友问我关于WKWebView与JS的交互问题,可我之前一直使用的是UIWebView,也不曾做过WKWebView的交互啊!接下来大家一块学习下WKWebView是怎么实现原生代码 ...

  5. Saltstack_使用指南15_多master

    1. 主机规划 实现2个master,当这两个master运行时都可以向minion发送命令. salt 版本 [root@salt100 ~]# salt --version salt (Oxyge ...

  6. flvjs的unload(),detachMediaElement(),destroy()报错,undefined,not a function解决方案

    首先,真的被网上一堆各种转载复制粘贴坑了不少,最后直接到GitHub上flvjs的看作者的demo和docs才解决,具体如下. 1.引入flvjs文件,新建实例 var flvUrl = '直播流地址 ...

  7. Linux系统学习 二、测评-身份鉴别1

    身份鉴别 1)对登陆操作系统和数据库系统的用户进行身份表示和鉴别 1.密码文件中的口令字段是否不为空 2.检查各个用户主目录下的.rhosts文件 3.查看/etc/hosts.equiv 学习: 1 ...

  8. 201871010111-刘佳华《面向对象程序设计(java)》第十四周学习总结

    201871010111-刘佳华<面向对象程序设计(java)>第十四周学习总结 实验十二  Swing图形界面组件(一) 实验时间 2019-11-29 第一部分:基础知识总结 1.设计 ...

  9. Mybatis----传入参数parameterType类型详解

    Mybatis----传入参数parameterType类型详解 前言 Mybatis的Mapper文件中的select.insert.update.delete元素中有一个parameterType ...

  10. 一个页面从输入url到加载到内容,这个过程经历了什么

    首先,当浏览器接收到url,会查看本地缓存(浏览器缓存-系统缓存-路由器缓存)中是否有,有则直接显示 没有则进行DNS域名解析,将域名解析成IP地址,通过ip地址去访问相应的服务器, 浏览器访问服务器 ...