toString、String.valueOf、Objects.toString,(String) 对象转为String的四种方法比较

本文探讨了在Java中将对象转换为String的四种常见方法:对象.toString(),Objects.toString(),强转以及String.valueOf(Object)。每个方法的特点和适用场景被详细阐述,包括对空值的处理和可能抛出的异常。

 

在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。常用的方法有 对象.toString(),Objects.toString(),强转,String.valueOf(Object)等。

 

1)对象.toString()

    因为所有java对象都继承至Object,java.lang.Object类里已有public方法.toString(),所以对任何严格意义上的java对象都可以调用此方法。但是,通常派生类会重写Object里的toString() 方法。调用该方法,需保证对象不是null值,否则将抛出NullPointerException异常。如果贸然地调用改变量的toString()方法,则可能引发NullPointerException。


2)Objects.toString()

    这是Java 7新增的一个Objects类(Java为工具类的命名习惯是添加一个字母s),其中有静态方法toString(Object obj)。这里obj若为null,Objects.toString(obj)将会返回“null”字符串。

其方法说明如下,可以看出实际调用的是 String.valueOf() 方法。

/**
     * Returns the result of calling {@code toString} for a non-{@code
     * null} argument and {@code "null"} for a {@code null} argument.
     *
     * @param o an object
     * @return the result of calling {@code toString} for a non-{@code
     * null} argument and {@code "null"} for a {@code null} argument
     * @see Object#toString
     * @see String#valueOf(Object)
     */
    public static String toString(Object o) {
        return String.valueOf(o);
    }

3)强转

    使用这种方法时,需要注意的是类型必须能转成String类型。因此最好用instanceof做个类型检查,以判断是否可以转换。否则容易抛出ClassCastException异常。此外,需特别小心的是因定义为Object 类型的对象在转成String时语法检查并不会报错,这将可能导致潜在的错误存在。null可以强制转换为任何java类类型,(String)null也是合法的。


4)String.valueOf()

String类提供的将基本类型值转为String对象的静态方法,返回删除头尾空白符的字符串。String.valueOf(Object obj)当这里的obj是null,将返回“null”字符串。

其方法说明如下,可以看出实际调用的是 对象.toString() 方法。

 /**
     * Returns the string representation of the {@code Object} argument.
     *
     * @param   obj   an {@code Object}.
     * @return  if the argument is {@code null}, then a string equal to
     *          {@code "null"}; otherwise, the value of
     *          {@code obj.toString()} is returned.
     * @see     java.lang.Object#toString()
     */
    public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值