开发中经常遇到从集合类List、Map中取出数据转换为String的问题,这里如果处理不好,经常会遇到空指针异常java.lang.NullPointerException,在此总结一下常用转换为String的方法,以及转换后如何对其进行判null使用的问题。

Java中对象转换为String的常用方法:

方法1、String objStr = (String) obj:    强制类型转换,对象obj为null,结果也为null,但是obj必须保证其本质是String类型的值,即可转换的值。例如,不能强制转换 (String) 123
方法2、String objStr = obj.toString方法    :调用对象的toString方法,必须保证本类或者父类已经重写了Object类的toString方法,如果没有重写toString方法,将默认调用Object类的toString方法,返回getClass().getName() + '@' + Integer.toHexString(hashCode()),并不是obj的实际字符串表示,同时还必须保证对象obj不能为null,否者调用toString方法会报空指针异常java.lang.NullPointerException。
方法3、String objStr = String.valueOf(obj) :    对象obj为null,转换结果为字符串"null",否则,返回 obj.toString() 的值。注意,如果为obj为null,这里转换后的值已经是字符串的“null”,判空不能再用 obj == nulll,而应该用 str.equals("null")。
 
已经知道obj为String类型的情况下,可以直接使用方法1转换为String,转换为String后判null条件为:if (objStr != null)
慎用方法2
对于不知道具体类型的情况下,可以使用方法3,只是转换后String的判null条件改为:if (!objStr.equals('null'))
 

测试代码:

public static void testStringNull() {
//String, toString, String.valueOf()
Object obj = null; String strByString = (String) obj;
// String strByToString = obj.toString(); //toString 必须保证不为null,否则java.lang.NullPointerException
String strByStringValueOf = String.valueOf(obj);
System.out.println("strByString="+strByString+", strByStringValueOf="+strByStringValueOf);
if (strByString == null ) {
System.out.println("strByString is null ");//执行
}
if (strByString != null && strByString.equals("null")) {
System.out.println("strByString is not null, is \"null\" ");//不执行
}
if (strByStringValueOf == null) {
System.out.println("strByStringValueOf is null ");//不执行
}
if (strByStringValueOf != null && strByStringValueOf.equals("null")) {
System.out.println("strByStringValueOf is not null, is \"null\" ");//执行
}
}

关于Java String 类型转换时null的问题的更多相关文章

  1. 关于Java String 类型转换时null的问题(转)

    关于Java String 类型转换时null的问题 开发中经常遇到从集合类List.Map中取出数据转换为String的问题,这里如果处理不好,经常会遇到空指针异常java.lang.NullPoi ...

  2. Java String类型转换成Date日期类型

    插入数据库时,存入当前日期,需要格式转换 import java.text.SimpleDateFormat; formatter = new SimpleDateFormat( "yyyy ...

  3. 原!! java直接打印一个对象时,并不是直接调用该类的toString方法 ,而是会先判断是否为null,非null才会调用toString方法

    网上看了好多java直接打印一个对象时,直接调用该类的toString方法 . 但是: Object obj=null; System.out.println(obj);//没有报错 System.o ...

  4. java日期类型转换总结date timestamp calendar string

    用Timestamp来记录日期时间还是很方便的,但有时候显示的时候是不需要小数位后面的毫秒的,这样就需要在转换为String时重新定义格式.         Timestamp转化为String: S ...

  5. Java byte类型转换成int类型时需要 & 0XFF的原因

    Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b  = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...

  6. 转 java 中int String类型转换

    转自licoolxue https://blog.csdn.net/licoolxue/article/details/1533364 int -> String int i=12345;Str ...

  7. java中string类型转换成map

    背景:有时候string类型的数据取出来是个很标准的key.value形式,通过Gson的可以直接转成map 使用方式: Gson gson = new Gson(); Map<String, ...

  8. java强制类型转换

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

  9. 转:JAVA强制类型转换

    object对象转换为String的一些总结 ----------------------------------------------------------------------------- ...

随机推荐

  1. 将 MacOS 默认的 PHP 版本升级到 7.*

    上接:在macOS Sierra 10.12搭建PHP开发环境 设置 brew brew tap homebrew/dupes brew tap homebrew/versions brew tap ...

  2. PHP面向对象概述

    结构化编程 在程序设计的早期,程序用流程图和自顶向下的方法设计.采用这种设计方法,程序员会将一个大的问题分解成更小的任务,然后为每个更小的任务编写一个过程(或函数).最后,程序员会编写一个主过程来启动 ...

  3. Lucene的使用与重构

    忽然一想好久不写博客了,工作原因个人原因,这些天一直希望一天假如36个小时该多好,但是,假如不可能. 由于近期在项目中接触了lucene,这个已经没有人维护的全文搜索框架,确实踩了不少坑,为什么用lu ...

  4. JAVA实用案例之水印开发

    写在最前面 上周零零碎碎花了一周的时间研究水印的开发,现在终于写了个入门级的Demo,做下笔记同时分享出来供大家参考. Demo是在我上次写的 JAVA实用案例之文件导入导出(POI方式) 框架基础上 ...

  5. 读Zepto源码之Event模块

    Event 模块是 Zepto 必备的模块之一,由于对 Event Api 不太熟,Event 对象也比较复杂,所以乍一看 Event 模块的源码,有点懵,细看下去,其实也不太复杂. 读Zepto源码 ...

  6. jenkins2 -pipeline 常用groovy脚本

    jenkins2的核心是pipeline,pipeline的核心是groovy. 那有一些基础的groovy是必须经常使用的,如变量赋值,变量引用,打印变量,输出字符,任务调用,循环判断等. Groo ...

  7. [C++ Calculator 项目] 基础运算实现

    Calculator V1.1 注:这是C++计算器项目第二部分-运算 [基于初始部分增改而得] 源文件已上传至github 主要问题: Ⅰ.运算实现的问题在于( ) + - * /的优先级的处理,以 ...

  8. python学习之while循环

    Python While 循环语句 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务.其基本形式为: while 判断条件: 执行语 ...

  9. 导入 theano 失败。“cannot import name gof”

    按照网上教程安装好了 theano 之后,import theano 出现错误."cannot import name gof".网上找了很多教程,都不可行.最后找到如下教程.亲测 ...

  10. spring 的单例模式

    singleton---单例模式 单例模式,在spring 中其实是scope(作用范围)参数的缺省设定值每个bean定义只生成一个对象实例,每次getBean请求获得的都是此实例 单例模式分为饿汉模 ...