码迷,mamicode.com
首页 > 编程语言 > 详细

Java学习笔记19

时间:2015-02-24 22:12:57      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:java   arrays   hashcode   tostring   hash   

Objects是Java 7新增的一个工具类,它提供了一些工具方法来操作对象,这些工具方法大多是“空指针”安全的。


Objects实现的方法如下:


技术分享


(1)hasCode(Object)方法在源码中是如何实现的:


 public static int hashCode(Object o) {
        return o != null ? o.hashCode() : 0;
    }

原来在hasCode(Object)方法中多做了一层判断,如果这个对象为null 的话,就返回一个int型的0给它,相反这个对象


不为null 的话,就获取它的哈希值,也就是说我们在使用这个方法时,就不必在意对象是否为空。


(2)hash(Object... values)方法在源码中如何实现的:

public static int hash(Object... values) {
        return Arrays.hashCode(values);
    }

在上面的程序中可以看到,传入的参数是可变的因为使用了Object来修饰,并通过...来实现传入的参数可以是多个不


同类型的参数。


接着来看看Arrays.hashCode(values)是如何实现的:


 public static int hashCode(Object a[]) {
        if (a == null)
            return 0;

        int result = 1;

        for (Object element : a)
            result = 31 * result + (element == null ? 0 : element.hashCode());

        return result;
    }


原来是通过foreach循环来获取每个传入的元素的哈希值,并将每个元素的哈希值通过 result = 31 * result + (element


 == null ? 0 : element.hashCode());来相加,最后获得每个哈希值累加后的值。

(3)toString(Object o)方法在源码中是如何实现的:


public static String toString(Object o) {
        return String.valueOf(o);
    }


关于String.valueOf(Object o)在源码中实现的方式:


 public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }

还是老样子,判断对象是否为空,如果为空就返回"null"字符串,反之,获取这个对象的信息并返回。


(4)toString(Object o, String nullDefault)方法在源码中的实现方式:


 public static String toString(Object o, String nullDefault) {
        return (o != null) ? o.toString() : nullDefault;
    }

和上面的toString(Object o)方法一样,获取对象的信息,唯一不同的是,如果对象为空,就返回自定义的nullDefault


字符串。



转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/43927021   情绪控_ 


Java学习笔记19

标签:java   arrays   hashcode   tostring   hash   

原文地址:http://blog.csdn.net/hai_qing_xu_kong/article/details/43927021

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!