• java 中的valueOf方法和强转


    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判断其类型时再强转

  • 相关阅读:
    poj 3080 kmp+暴力
    org.apache.spark.rpc.RpcTimeout$$anonfun$1.applyOrElse
    log4j:WARN No appenders could be found for logger
    HBase2.0.5 WordCount
    Eclipse连接HBase 报错:org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
    Eclipse Oxygen.2 Release (4.7.2)添加JUnit
    hiveserver2启动成功但无法通过beeline连接
    vi从当前行删除到最后一行
    Hive SemanticException
    Hive启动失败
  • 原文地址:https://www.cnblogs.com/rocky-AGE-24/p/6658303.html
Copyright © 2020-2023  润新知