case1:Object 对象转String

需要强调的是String.valueOf()方法,当参数为类型是object,且值时null的时候他的处理方式

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

这样在后面的成都不会报错但是在逻辑上可能出错,一般习惯写的是str!=null && str.length()>0

当是由 str = String.valueOf(obj)得到时上面的额判断条件就有问题了

所以遇到 Object 对象转String 最好强转 str=  (String) obj此时,当obj为null时,str依然为null

case2:Object 装基本类型的包装类型,(关注integer和Long,Double)

首先 obj被赋值之后 obj还是属于数据所属基本类型的包装类型可以通过instanceOf 判断知道.

所以直接用强转就可以,没有必要用类似Long.ParseLong(String.valueOf(obj))这类方法,用这中复杂的问题会有一个问题就是不能返回值不能包含null

如果是null就直接抛出异常了,因为在String.valueOf()方法时已经把null转为字符串了,而Long.parseLong()方法如果传入了null字符串就会报异常,

Long.ParseLong(String.valueOf(obj)) 方法就等价与 (long)obj,用基本类型去强转

更好的做法是用(Long)obj去强转,在后面的程序中做null情况的判断和处理

case3: 基本类型的包装类型和String的vlaueOf方法对与obj=null的处理是不一样的,String.valueOf(obj)的处理返回的"null"字符串,而基本类型的包装类型返回的null

强调一下,String不是基本类型,更不是基本包装类型

总结:1遇到obj类型转string时最好强转

2遇到obj类型转几倍类型的包装类型时最好强转,如果需要可以先用instanceOf判断其类型时再强转

java 中的valueOf方法和强转的更多相关文章

  1. Java中String.valueOf()方法的解释

    1. 由 基本数据型态转换成 String String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String.valueOf() 这个参数多载的方法 有下 ...

  2. Java中String.valueOf、toString、(String)的区别

    原文地址http://blog.csdn.net/yangzhaomuma/article/details/51173138 原文地址https://www.cnblogs.com/xhyouyou/ ...

  3. Java中四种引用:强、软、弱、虚引用

    这篇文章非常棒:http://alinazh.blog.51cto.com/5459270/1276173 Java中四种引用:强.软.弱.虚引用 1.1.强引用当我们使用new 这个关键字创建对象时 ...

  4. Java中的toString()方法

    Java中的toString()方法 目录 Java中的toString()方法 1.    对象的toString方法 2.    基本类型的toString方法 3.    数组的toString ...

  5. java中的compareto方法的详细介绍

    java中的compareto方法的详细介绍 Java Comparator接口实例讲解(抽象方法.常用静态/默认方法) 一.java中的compareto方法 1.返回参与比较的前后两个字符串的as ...

  6. 浅谈Java中的hashcode方法

    哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: 1 public native int hashCode(); 根据 ...

  7. 千万不要误用 java 中的 HashCode 方法

    刚才debug追堆栈的时候发现一个很奇怪的问题 我用IE8和Google的浏览器访问同一个地址 Action的 scope="session" 也设置了 而且两个浏览器提交的参数m ...

  8. Java中的main()方法详解

    在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是 ...

  9. 【转】浅谈Java中的hashcode方法(这个demo可以多看看)

    浅谈Java中的hashcode方法 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native i ...

随机推荐

  1. Problem R: 零起点学算法13——求2个时间之间的分钟数

    #include<stdio.h> int main() { int a1,b1,a2,b2,s; scanf("%d:%d",&a1,&b1); sc ...

  2. 杂谈PID控制算法——最终篇:C语言实现51单片机中的PID算法

    真遗憾,第二篇章没能够发表到首页上去.趁热打铁.把最终篇——代码篇给发上来. 代码的设计思想请移步前两篇文章 //pid.h #ifndef __PID__ #define __PID__ /*PID ...

  3. DataRow 数组转化成DataTable

    #region 封装DataTable DataTable dt = null; if (newRows.Length > 0) { dt = newRows[0].Table.Clone(); ...

  4. 专访阿里巴巴研究员“赵海平”:Facebook的PHP底层性能优化之路(HipHop,HHVM)

    专访阿里巴巴研究员“赵海平”:Facebook的PHP底层性能优化之路 http://www.infoq.com/cn/articles/interview-alibaba-zhaohaiping

  5. IDEA中添加类的创建者信息

    创建方法: 1. 使用快捷键(ctrl + alt + s),在弹出框中左边侧选择 Editor -> File and Code Templates,左边侧相应会更新 右边侧选择 Class, ...

  6. TSQLDBServerHttpApi使用工作线程池

    TSQLDBServerHttpApi使用工作线程池 TSQLDBServerHttpApi创建时,默认是使用单线程模式,且只使用一个数据库连接,服务端要应对众多的客户端只靠一个工作线程(主线程)和一 ...

  7. Shell实现循环执行curl向Solr导入json文件

    #!/bin/bash for file in ./文件夹名/* do echo $file curl "http://IP:8983/solr/集合名/update?commit=true ...

  8. (转)spring boot实战(第三篇)事件监听源码分析

    原文:http://blog.csdn.net/liaokailin/article/details/48194777 监听源码分析 首先是我们自定义的main方法: package com.lkl. ...

  9. 一种让UITableView的数据从下往上增长的方式

    遇到问题 一般来说tableview的数据都是从上往下增长,如下图所示(先是aaa出现在表格列表的最顶部,然后bbb出现在aaa的下面,以此类推) 但是如果我们想反向这个过程该怎么做呢?如下图所示(先 ...

  10. java 问题汇总(总结,重点)若忘了可以看看{不定时更新}

    在用到spring框架中时,场景如下 post 请求过去,对象接收不到参数的值(解决办法:考虑到在参数上加个@RequestBody 注解即可,有些没加的是框架帮忙处理了后默认接收的是json串) h ...