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相关推荐

  1. Java学习笔记(十)--控制台输入输出

    输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...

  2. springmvc学习笔记(19)-RESTful支持

    springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...

  3. java学习笔记十三

    11. 凡是继承了FilterOutputStream或FilterInputStream的类都是过滤流,也就是说他们不能直接跟目标(键盘,文件,网络等,节点流可以)数据打交道,只能包装 Intput ...

  4. 【Java学习笔记之二十六】深入理解Java匿名内部类

    在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...

  5. Java学习笔记22:并发(2)

    Java学习笔记22:并发(2) 图源:PHP中文网 终止任务 终止线程有一种非常简单的方式:设置一个多线程共享的标记位,子线程用轮询的方式检查这个标记位,如果该标记位显示取消状态,就让子线程退出执行 ...

  6. Java学习笔记Day02

    Java学习笔记Day02 一.细化Hello程序 1.详解代码 //公有的类,叫做Hello public class Hello{//主方法public static void main(Stri ...

  7. 郑志远的java学习笔记

    郑志远的java学习笔记 郑志远    CCB 1         Java起源 略 2         Java语言概述 1.面向对象编程的3个原则:封装(encapsulation).继承(inh ...

  8. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  9. 【Java】Java学习笔记(2)——Java面向对象基础作业函数题

    本人私人博客:Megalomania,大部分文章会现在博客上传,有不足之处欢迎指正. 学校小学期Java课程的练习题,留个档便于以后需要时候有例子可以回忆,写的烂的地方请多多包含 1.求两个数值之和 ...

最新文章

  1. CBV 验证装饰器的使用
  2. 安装Vertica数据库
  3. SelectBox插件
  4. 混合SSVEP-P300 BCI生产双频SSVEP
  5. 天使投资乱象频出 熟人元素何时剔除
  6. 高并发-【抢红包案例】之二:使用悲观锁方式修复红包超发的bug
  7. C++ Opengl Fog(雾)源码
  8. 移动端 关闭浏览器事件_前端开发中什么是移动端点透事件?
  9. druid链接mysql-proxy_MySQL读写分离之mysql-proxy
  10. u8虚拟服务器端口,用友u8服务器参数配置
  11. GAD游戏学院系列丛书发布,引爆峰会现场
  12. perl语言 入门(转)
  13. Xshell6已过期的解决方案
  14. iperf3 linux源码下载
  15. 如何在Google地图上找到经度和纬度
  16. lubuntu输入法设置_Ubuntu18输入法设置
  17. 精美素材:10套最新出炉的免费扁平图标下载
  18. Html —— 获取输入框input的值
  19. android删除本地图片,Android中结合contentResolver.delete和file.delete实现本地图片的删除...
  20. cad渐变线怎么画_CAD中怎么填充距离渐变的线条???

热门文章

  1. 钉钉需要什么java知识_Java钉钉开发_01_开发前的准备
  2. Office 365和SFB更新
  3. 通过Android重审GET和POST请求
  4. 百度地图-解决新版百度定位失败问题
  5. rhel6.3挂载HP-EVA6400磁阵--linux端操作流程
  6. 设计模式——控制反转依赖注入
  7. 狮子座2007年星座运程
  8. DataRow复制一行到另一个DataTable
  9. 【区间DP】释放囚犯
  10. exportfs命令和FTP服务