HashCode();wait();notify();equals();getClass();toString();clone();finalize();

  这里只是简单介绍一下其中的几个函数:

  HashCode():

     * As much as is reasonably practical, the hashCode method defined by
     * class {@code Object} does return distinct integers for distinct
     * objects. (This is typically implemented by converting the internal
     * address of the object into an integer, but this implementation
     * technique is not required by the
     * Java™ programming language.)

  这个是Java官方文档里的部分解释,简单地说就是返回一个integer类型的值,这个值是通过该Object的内部地址(internal address)转换过来的,这个哈希码是可以通过getClass()方法看到具体值的,显示的是十六进制的数,有时候可以通过此方法来判断对象的引用是否相等,研究java内存的时候,这个可能会有用。

  equals():

  都知道java中比较字符串是否相等应该用equals();而==则是比较的值,也就是引用;那么为什么是这样的呢?我今天看了下equals的实现方法,发现字符串的比较,是通过每一个字符进行比较,如果都相等,则返回true;而源码里面Object类型的equals方法却是直接用==来代替的,也就是说相当于直接比较引用了,这也就是为什么我们有时候要重写equals方法了,下面附上Jdk中String类型的equals方法源码。

    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

  getClass():

  toString():

  下面的例子中j是一个简单的Java对象,后面分别是toString()方法和getClass()方法的输出,@后面的即为哈希码,也就是内存地址,getClass()返回运行时的类,

还有getName(),getSimpleName()方法,这些都可以通过查看源码的方法来了解用法,看源码真的是很好的一种学习方法。

System.out.println(j.toString());
System.out.println(j.getClass());
com.wust.cvte.j2se@15db9742
class com.wust.cvte.j2se

  clone():

  中文”克隆"的意思,刚开始我看源码里的注释,看的并不是很懂,后来又在网上查看一些博客,明白了clone方法实际上是实现了浅复制,附上一篇详解此方法的博客,有图有真相,特别详细,http://blog.csdn.net/zhangjg_blog/article/details/18369201#0-qzone-1-28144-d020d2d2a4e8d1a374a433f596ad1440

  其它方法涉及到线程和内存回收,GG等,到用的时候再做记录吧,其中若有不正确之处,欢迎指证。

  

  

Java中Object类的公有方法的更多相关文章

  1. java中Object类的getClass方法有什么用以及怎么使用?

    Object类的getClass的用法: Object类中有一个getClass方法,m  a  r  k- t  o- w i n:它会返回一个你的对象所对应的一个Class的对象,这个返回来的对象 ...

  2. Java中Object类hashCode的底层实现

    Java中Object类hashCode的底层实现 openjdk\jdk\src\share\native\java\lang\Object.c 42 static JNINativeMethod ...

  3. Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能

    Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能. 下面是个例子: import org.junit.Test; import java. ...

  4. 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)

    java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...

  5. Java中Object类常用的12个方法,你用过几个?

    前言 Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的“老祖宗”.Java 中所有的类都有一个共同的祖先 Object 类,子类都会继承所有 Object ...

  6. Java中Object类的方法笔记

    今天看了下Object类的源码,以下是我看源码的一些笔记,欢迎有小伙伴来补充~ 首先列举下几个主要方法(面试被问到过的): equals:这个主要是用于比较对象的,Object中比较的是比较原始的,直 ...

  7. Java中String类的format方法使用总结

    可参考: http://www.cnblogs.com/fsjohnhuang/p/4094777.html http://kgd1120.iteye.com/blog/1293633 String类 ...

  8. java中Object类是怎么回事,干嘛使的?举例说明!

    Object类的作用:m a r k - t o-        w i n: 在java中,因为所有的类都有共性,所以java的缔造者们把java设计成这样:所有的类都是Object类的直接或间接子 ...

  9. Java中Object类

    Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另一个类,那么这个类默认继承Object类. Object类中的方法,适合所有子类. Object中的几个重要方法: 1 ...

随机推荐

  1. matlab函数之imresize()

    B = imresize(A,scale) B = imresize(A,scale) 返回图像 B,它是将 A 的长宽大小缩放 scale 倍之后的图像.输入图像 A 可以是灰度.RGB 或二值图像 ...

  2. C++的异常捕获

    听课笔记: #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; void fun() { ;// ...

  3. PHP继承中$this的问题

    在父类中的构造函数中使用$this , 这是$this指的是正在实例化的子类对象,不管是parent还是继承调用父类的构造函数. 如: class CompanyController extends ...

  4. cscope usage

    1) Reference: Linux 平台下阅读源码的工具链 程序员的利器 – cscope 2) cscope help: :help cscope :help cscope-suggestion ...

  5. Python习题-登录

    写一个登录的程序,失败次数最多为3次,输入账号.密码错误,提示账号/密码错误.失败三次程序退出,输入正确,提示欢迎xxx登录 i=0while (i<3): username = input(' ...

  6. BZOJ4676 Xor-Mul棋盘

    传送门 题目大意懒得写了,题目说的挺明白的了 题解 主要的难点在于异或意义下的最大值和很玄学,但不难发现这道题中让你定义的$D_{i,j}$只参与异或运算,所以我们可以逐位进行讨论.所以我们每一位就只 ...

  7. java基础回顾之IO

    Java的IO 是Java运用重要部分之一,涉及到的内容也比较多,容易混淆,一段时间不用,可能就会遗忘,要时常回顾记忆一下: (图片来源于网络) Java 流在处理上分为字符流和字节流. 字符流处理的 ...

  8. windows 2013 datacenter 安装sql server2008 r2兼容性

    add-windowsfeature RSAT-Clustering-AutomationServer

  9. iOS中使用NSInvocation

    在iOS中可以使用NSInvocation进行动态调用方法. /* NSInvocation is much slower than objc_msgSend()... Do not use it i ...

  10. 安装DCOS,关于docker异常引发的调查

    入门DCOS,刚开始安装,碰到了一个异常: Bind for 0.0.0.0:9000 failed: port is already allocated. 调试这个问题花费了好长时间,因为无法通过n ...