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 命令行乱码的问题

    解决java 命令行乱码的问题

    这篇文章主要介绍了解决java 命令行乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java中的布隆过滤器原理实现和应用

    Java中的布隆过滤器原理实现和应用

    Java中的布隆过滤器是一种基于哈希函数的数据结构,能够高效地判断元素是否存在于一个集合中。它广泛应用于缓存、网络协议、数据查询等领域,在提高程序性能和减少资源消耗方面具有显著优势
    2023-04-04
  • java对象数组实现学生信息管理系统

    java对象数组实现学生信息管理系统

    这篇文章主要为大家详细介绍了java对象数组实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • JUnit5相关内容简介

    JUnit5相关内容简介

    这篇文章主要介绍了JUnit5相关内容简介,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Springboot实现多服务器session共享

    Springboot实现多服务器session共享

    这篇文章主要为大家详细介绍了Springboot实现多服务器session共享,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • JAVA使用ElasticSearch查询in和not in的实现方式

    JAVA使用ElasticSearch查询in和not in的实现方式

    今天小编就为大家分享一篇关于JAVA使用Elasticsearch查询in和not in的实现方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • JAVA用户自定义事件监听实例代码

    JAVA用户自定义事件监听实例代码

    这篇文章主要介绍了JAVA用户自定义事件监听实例代码的相关资料,需要的朋友可以参考下
    2017-04-04
  • SpringBoot配置文件导入方法详细讲解

    SpringBoot配置文件导入方法详细讲解

    Spring Boot虽然是Spring的衍生物, 但默认情况下Boot是不能直接使用Spring的配置文件的, 我们可以通过两种方式导入Spring的配置
    2022-10-10
  • 一文彻底搞定Java哈希表和哈希冲突

    一文彻底搞定Java哈希表和哈希冲突

    本文介绍了什么是哈希表?什么是哈希函数?什么是哈希冲突?三个问题的解决方案,文中有非常详细的代码示例,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • SpringBoot整合Mybatis实现高德地图定位并将数据存入数据库的步骤详解

    SpringBoot整合Mybatis实现高德地图定位并将数据存入数据库的步骤详解

    这篇文章主要介绍了SpringBoot整合Mybatis实现高德地图定位并将数据存入数据库的步骤详解,本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论