`

经典的Object转为String的几种形式[转]

    博客分类:
  • Java
JDK 
阅读更多
经典的Object转为String的几种形式[转]
在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。本文将对常用的转换方法进行一个总结。常用的方法有Object#toString(),(String)要转换的对象,String.valueOf(Object)等。下面对这些方法一一进行分析。

方法1:采用 Object#toString()方法
请看下面的例子:

  Object object = getObject();

System.out.println(object.toString());

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

方法2:采用类型转换(String)object方法
这是标准的类型转换,将object转成String类型的值。使用这种方法时,需要注意的是类型必须能转成String类型。因此最好用instanceof做个类型检查,以判断是否可以转换。否则容易抛出CalssCastException异常。此外,需特别小心的是因定义为Object 类型的对象在转成String时语法检查并不会报错,这将可能导致潜在的错误存在。这时要格外小心。如:

Object obj = new Integer(100);

String strVal = (String)obj;

在运行时将会出错,因为将Integer类型强制转换为String类型,无法通过。但是,

Integer obj = new Integer(100);

String strVal = (String)obj;

如是格式代码,将会报语法错误。

此外,因null值可以强制转换为任何java类类型,(String)null也是合法的。

方法3:采用String.valueOf(Object)
String.valueOf(Object)的基础是Object#toString()。但它与Object#toString()又有所不同。在前面方法1的分析中提到,使用后者时需保证不为null。但采用第三种方法时,将不用担心object是否为null值这一问题。为了便于说明问题,我们来分析一下相关的源代码。Jdk里String# valueOf(Object)源码如下:

  /**

   * Returns the string representation of the Object argument.

   *

   * @param  obj  an Object.

   * @return if the argument is null, then a string equal to

   *     "null"; otherwise, the value of

   *     obj.toString() is returned.

   * @see   java.lang.Object#toString()

   */

  public static String valueOf(Object obj) {

    return (obj == null) ? "null" : obj.toString();

}

从上面的源码可以很清晰的看出null值不用担心的理由。但是,这也恰恰给了我们隐患。我们应当注意到,当object为null时,String.valueOf(object)的值是字符串”null”,而不是null!!!在使用过程中切记要注意。试想一下,如果我们用 if(String.valueOf(object)==null){System.out.println(“传入的值是null!”);}这样的语句将可能会发生什么问题。再想一下,向控制台输出时,在视觉上如下语句在执行的结果上有什么不同:

System.out.println(String.valueOf(null));

System.out.println(null);

我们看到的输出将是一模一样的东西:null,但它们意义相同吗?
分享到:
评论

相关推荐

    探讨Object转为String的几种简易形式详解

    在项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。本文将对常用的转换方法进行一个总结。常用的方法有Object.toString(),(String)要转换的对象,String.valueOf(Object)等。下面对这些方法...

    这几种方式将前端的 对象转换成json ,再用 Json.stringify(list)

    下面我们将详细探讨几种常见的将前端对象转换为JSON并使用`JSON.stringify()`的方法。 1. **直接使用`JSON.stringify()`** `JSON.stringify()`是JavaScript内置的函数,用于将一个JavaScript值(对象或数组)转换...

    java转json串的几种方法

    这种方式适合于数据结构已经以Map形式存在的场景。 3. **通过json字符串生成json串** 如果你有一个JSON格式的字符串,想解析成Java对象,可以使用`JSON.parseObject(jsonStr, YourClass.class)`。例如,如果你有...

    json 转为map 适合java

    json(JavaScript Object Notation)是一种轻量级的数据交换格式,它广泛应用于 web 开发、移动应用开发和微服务架构中。Java 是一种流行的编程语言,广泛应用于企业级应用开发、Android 开发和桌面应用开发中。将 ...

    xml格式的字符串转换成List

    在IT行业中,XML(eXtensible Markup Language)是一种被广泛使用的数据交换格式,它具有良好的可读性和结构化特性。当我们需要将XML格式的字符串转换为List对象时,这通常涉及到数据解析的过程。这篇博客“xml格式...

    java中实现map与对象相互转换的几种实现

    Java中实现Map与对象相互转换的几种实现 Java中实现Map与对象相互转换是许多开发者经常遇到的问题,本文将介绍五种实现Map与对象相互转换的方法,每种方法都将通过示例代码进行详细的介绍。 方法一:使用org....

    Springboot DTO字符字段与日期字段的转换问题.docx

    解决这个问题有几种方法: 1. **使用`@JsonFormat`注解**: 可以在`birthday`字段上添加`@JsonFormat`注解,指定日期格式和时区,如: ```java @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") ...

    js中int和string数据类型互相转化实例.docx

    在JavaScript中,将整型数值转化为字符串有以下几种常见方法: #### (1) 使用 `toString()` 方法 ```javascript var x = 100; var a = x.toString(); // a becomes "100" ``` #### (2) 使用空字符串连接操作符 `+...

    json转为xml jar

    JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛使用的数据交换格式,它们在互联网上用于传递和存储结构化数据。JSON以其简洁和易于解析的特性,通常用于前端与后端之间的数据...

    MFC及com常用转换强制类型转化

    #### 5.1 CString转为string ```cpp CString strContent = _T("Hello"); std::string strStd = strContent.GetBuffer(strContent.GetLength()); strContent.ReleaseBuffer(); ``` 或者使用`GetString`方法: ```cpp ...

    在ASP.net中把上传的视频自动转为Flv格式的

    ### 在ASP.NET中实现视频自动转换为FLV格式 #### 概述 本文将详细介绍如何在ASP.NET应用...此外,随着技术的发展,目前更推荐使用HLS或DASH等流媒体格式,但FLV作为一种经典格式,在某些特定场景下仍然有其应用价值。

    javascript基础讲解

    引用类型(也称为类)如Object、Boolean、Number和String等则是对象的表示,它们有自己的方法,例如String类的`charAt()`、`charCodeAt()`、`length`属性和`fromCharCode()`静态方法。 运算符方面,JavaScript支持...

    JS开发中基本数据类型具体有哪几种

    JavaScript中的基本数据类型主要有以下几种: 1. 数值类型(Number) JavaScript中的数值类型用来表示整数和浮点数。例如:1, 3.14, -2019等。JavaScript不区分整数和浮点数,它们都是Number类型。 2. 字符串类型...

    java将图片转为base64返回给前端

    Base64 编码是一种常用的编码方式,能够将二进制数据转换为文本字符串,以便在网络上传输。 Java 图片转换为 Base64 的实现过程 Java 图片转换为 Base64 返回给前端的实现过程可以分为以下几个步骤: 1. 读取图片...

    【Android】JSON应用

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛应用于移动开发,尤其是在Android平台上。它易于人阅读和编写,同时也易于机器解析和生成。这个“【Android】JSON应用”主题主要涵盖如何在...

    sanitize-object-deep-by-regex

    如果某个值不符合规则,该工具可能有以下几种处理方式: 1. **替换**:将不符合规则的值替换为其他值,例如空字符串、默认值或特定占位符。 2. **删除**:如果某个值不匹配,则直接从对象或数组中移除。 3. **转换*...

    最新各大公司企业真实面试题-金证公司笔试题.txt

    - **隐式转换:**JSP 会自动将某些类型的变量转换为适合的类型,如 String 转为 int、float 等。 - **显式转换:**可以通过 `Integer.parseInt(String s)`、`Float.parseFloat(String s)` 等方法进行显式转换。 在...

    文思创新JAVA面试题1

    根据给定的文件标题、描述、标签以及部分内容,下面将详细阐述其中提到的几个关键知识点。 ### 1. JSP的内置对象及作用 JSP(JavaServer Pages)是一种基于Java的技术,用于创建动态网页。它通过在HTML或XML文档中...

Global site tag (gtag.js) - Google Analytics