java中toString()、String.valueOf()、(String) 强转的区别

 更新时间:2024年06月28日 10:45:08   作者:文丑颜不良啊  
在实际开发中,少不了使用这三种方法对某一个类型的数据进行转 String 的操作,本文就来介绍了java中toString()、String.valueOf()、(String) 强转的区别,感兴趣的可以了解一下

在实际开发中,少不了使用这三种方法对某一个类型的数据进行转 String 的操作,那么什么情况下使用哪种方法更快捷,以及这些方法使用时的一些注意事项都有哪些呢?来叙述一下这三种方法的使用场景。废话少说,直接上代码!

一、基本类型转换

1.toString()

基本类型是没有 toString() 方法的

2.String.valueOf()

基本类型转 String 类型时,推荐使用 String.valueOf() 方法。

可以看到,基本上所有的基本类型都可以使用 String.valueOf() 方法去转换为 String 类型。

3.(String) 强转

一般情况下,不推荐使用强转的方法去将某一类型转换为 String 类型。

代码会提示类型错误的。(String) 是标准的类型转换,可将 Object 类型转为 String 类型,使用(String) 方法进行强转时,最好使用 instanceof 做一个类型检查,以判断是否可以进行强转,否则容易抛出 ClassCastException 异常。需要注意的是编写的时候,编译器并不会提示有语法错误,所以这个方法要谨慎的使用。

使用 instanceOf 与不使用 instanceOf 对比:

当待转换数据的类型为 Integer 时,使用 (String) 方法强转会报错,所以一般情况下能使用 String.valueOf() 方法进行转换的,就不推荐使用 (String) 方法强转。

二、包装类型转换

1.toString()

包装类型时可以使用 toString() 方法去成功转换为 String 类型的。

2.String.valueOf()

包装类型也是可以使用 String.valueOf() 方法去转换为 String 类型的。

3.(String) 强转

包装类型的强转和基本类型的强转一样,都会报错的,这也是各种大佬不使用 (String) 去进行强转的原因

三、null 值问题

1.toString() 会报空指针异常

对 null 值进行 toString() 转换时,会报空指针异常。

2.String.valueOf() 会转换为 "null" 字符串

注意,不是 null 值,而是 "null" 字符串。

3.(String) 强转成功

注意使用强转的方法去转换 null 值与使用 String.valueOf() 方法去转换 null 的区别,强转返回 null 值,String.valueOf() 方法会返回 "null" 字符串。

这是因为 String.valueOf() 的源码就是这么转换的

总结一下就是:

1、toString(),可能会抛空指针异常

在这种使用方法中,因为 java.lang.Object 类里已有 public String toString() 方法,所以 java 对象都可以调用此方法。但在使用时要注意,必须保证 object 不是 null 值,否则将抛出NullPointerException 空指针异常。采用这种方法时,通常派生类会覆盖 object 里的 toString() 方法。

2、String.valueOf(),建议使用,返回字符串 "null"

String.valueOf() 不会出现空指针异常,而且是静态的方法,直接通过 String 调用即可,只是有一点需要注意,就是上面提到的,如果为 null,String.valueOf() 返回结果是字符串 "null",而不是null,这就要求如果需要对String.valueOf() 方法转换之后字符串进行判空等逻辑除了里的时候,一定要注意 "null"。

3、(String) 强转,不建议使用

(String)是标准的类型转换,将 Object 类型转为 String 类型,使用 (String) 强转时,最好使用 instanceof 做一个类型检查,以判断是否可以进行强转,否则容易抛出 ClassCastException 转换异常。如果确需使用,还请谨慎为好!

到此这篇关于java中toString()、String.valueOf()、(String) 强转的区别的文章就介绍到这了,更多相关toString()、String.valueOf()、(String) 强转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中Mono类的一些基本方法和示例代码

    Java中Mono类的一些基本方法和示例代码

    在Java编程中,我们经常会遇到需要创建单例(singleton)对象的情况,单例模式是一种常见的设计模式,它保证一个类只有一个实例,并提供一个全局访问点,这篇文章主要给大家介绍了关于Java中Mono类的相关资料,需要的朋友可以参考下
    2024-07-07
  • Java正则表达式API字符类

    Java正则表达式API字符类

    这篇文章主要介绍了Java正则表达式API字符类,Java正则表达式API也接受预定义的字符类,下面文章内容展开了更多的相关内容介绍,需要的朋友可以参考一下
    2022-06-06
  • Java使用跳转结构实现队列和栈流程详解

    Java使用跳转结构实现队列和栈流程详解

    这篇文章主要介绍了Java使用跳转结构实现队列和栈流程,连续结构和跳转结构是数据结构中常见的两种基本数据结构,而我们本次的主角栈和队列都 既可以使用使用跳转结构实现也可以使用连续结构实现
    2023-04-04
  • Java中字符串截取方法详解及实际应用小结

    Java中字符串截取方法详解及实际应用小结

    java中截取字符串的常用方法是使用String类的substring方法,本文通过实例代码给大家介绍Java中字符串截取方法详解及实际应用小结,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • druid的borrow行为方法源码解析

    druid的borrow行为方法源码解析

    这篇文章主要为大家介绍了druid的borrow行为方法源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • SpringBoot系列教程之dubbo和Zookeeper集成方法

    SpringBoot系列教程之dubbo和Zookeeper集成方法

    这篇文章主要介绍了SpringBoot系列教程之dubbo和Zookeeper集成方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java使用JDK与Cglib动态代理技术统一管理日志记录

    Java使用JDK与Cglib动态代理技术统一管理日志记录

    这篇文章主要介绍了Java使用JDK与Cglib动态代理技术统一管理日志记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 聊聊finally中的代码一定会执行吗

    聊聊finally中的代码一定会执行吗

    通常在面试中,只要是疑问句一般答案都是“否定”的,因为如果是“确定”和“正常”的,那面试官就没有必要再问了嘛,本文想和大家聊聊finally中的代码一定会执行吗?,感兴趣的朋友跟着小编一起来看看吧
    2023-12-12
  • Java异常分类处理抛出捕获操作详解

    Java异常分类处理抛出捕获操作详解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等
    2022-09-09
  • Mybatis联合查询的实现方法

    Mybatis联合查询的实现方法

    本文主要介绍了 Mybatis联合查询的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论