Java String转换时为null的解决方法

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

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

  方法一:String  objStr  =  (String) obj

      强制类型转换,对象obj为null,结果也为null,但是obj必须保证其本质是String类型的值,即可转换的值。

      例如,不能强制转换 (String) 123 

  方法二:String  objStr  =  obj.toString()

      调用对象的toString方法,必须保证本类或者父类已经重写了Object类的toString方法,如果没有重写toString方法,

      将默认调用Object类的toString方法,返回getClass().getName() + '@' + Integer.toHexString(hashCode())

      并不是obj的实际字符串表示,同时还必须保证对象obj不能为null,否者调用toString方法会报空指针异常java.lang.NullPointerException

  方法三:String  objStr  =  String.valueOf(obj):

      对象obj为null,转换结果为字符串"null",否则,返回 obj.toString() 的值。

      注意,如果为obj为null,这里转换后的值已经是字符串的“null”,判空不能再用 obj == null,也不能使用apache.commons.lang3

      下的StringUtils.isBank(CharSequence cs),而应该用 str.equals("null")

已经知道obj为String类型的情况下:

  使用方法1转换为String,转换为String后判null条件为:if (objStr != null)

  慎用方法2 

  对于不知道具体类型的情况下,可以使用方法3,只是转换后String的判null条件改为:if (!objStr.equals('null'))

以上所述是小编给大家介绍的Java String转换时为null的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2017-07-04

java 中String.equals和==的比较

 java 中String.equals和==的比较 初学java有段时间了,但是昨晚忽然就被"asd"==getpara("password")搞得不开心了:确实JAVA很多东西和以前接触过的语言完全不一样,比如最简单的new String("asd") !=new String ("asd"). 1 一个最简单的程序: public class A { public static void main(String args

Java String方法获取字符出现次数及字符最大相同部分示例

本文实例讲述了Java String方法获取字符出现次数及字符最大相同部分.分享给大家供大家参考,具体如下: package demo; public class Test { public static void main(String[] args) { String str = "dasdalldsdslldsdszxll"; System.out.println("count="+get(str,"ll"));//打印ll出现的次数 St

java 中String和StringBuffer与StringBuilder的区别及使用方法

java 中String和StringBuffer与StringBuilder的区别及使用方法 1. String 类 String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间. String a = "a"; //假设a指向地址0x0001 a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向

浅谈java分页三个类 PageBean ResponseUtil StringUtil

如下所示: package ssmy.page; /** * 分页类 * @author Jesse * */ public class PageBean { private int page;//第几页 private int pageSize;//每页显示的记录数 private int start ;//起始记录数 public int getPage() { return page; } public void setPage(int page) { this.page = page;

java String的深入理解

java String的深入理解 一.Java内存模型  按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配. JVM主要管理两种类型内存:堆和非堆,堆内存(Heap Memory)是在 Java 虚拟机启动时创建,非堆内存(Non-heap Memory)是在JVM堆之外的内存. 简单来说,非堆包含方法区.JVM内部处理或优化所需的内存(如 JITCompiler,Just-in-time Compiler,即时编译后的代码缓存).每个类结构(如

java中的 toString()方法实例代码

前言: toString()方法 相信大家都用到过,一般用于以字符串的形式返回对象的相关数据. 最近项目中需要对一个ArrayList<ArrayList<Integer>> datas  形式的集合处理. 处理要求把集合数据转换成字符串形式,格式为 :子集合1数据+"#"+子集合2数据+"#"+....+子集合n数据. 举例: 集合数据 :[[1,2,3],[2,3,5]]  要求转成为 "[1,2,3]#[2,3,5]"

java StringBuilder类的详解及简单实例

 java  StringBuilder类的详解及简单实例 实现代码: public class StringBuilderTest { /** * @param args */ public static void main(String[] args) { StringBuilder sb = new StringBuilder(); // 追加字符串 sb.append("java");//sb = "java" // 插入 sb.insert(0 , &qu

详解json string转换为java bean及实例代码

详解json string转换为java bean及实例代码 pom中添加如下两个库: <dependency> <groupId>org.codehaus.jackson </groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.2</version> <scope>provided</scope> </depende

C++详解默认参数的构造函数及简单实例代码

现在给大家介绍下 有默认参数的构造函数: 大家知道函数获取形参的时候是通过函数调用时在实参里获得的,因此我们必须保证 实参的个数 和 形参的个数必须相同.而且有些情况下我们对于实参或许都是个固定的值.例如 我们需要计算长方形的面积 长x宽 但是用户可以不输入长 而且如果用户指定的情况下默认的长为 3,但是如果用户指定了则使用用户指定的宽 这就是用到默认参数了! 代码: #include <iostream> using namespace std; int area(int l,int w=3

详解python脚本自动生成需要文件实例代码

python脚本自动生成需要文件 在工作中我们经常需要通过一个文件写出另外一个文件,然而既然是对应关系肯定可以总结规律让计算机帮我们完成,今天我们就通过一个通用文件生成的python脚本来实现这个功能,将大家从每日重复的劳动中解放! 定义一个函数 def produceBnf(infilename,outfilename): List=[] with open(infilename,'r') as inf: for line in inf.readlines(): List.append(re.

Json转化为Java对象的实例详解

Json转化为Java对象的实例详解 问题:前后端数据交互时,经常会遇到Json串与Java对象转化的问题,有的Java对象中还包含了List对象等. 解决方案: 引入 json-lib包,Maven坐标如下: <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> &l

Java BigDecimal详解_动力节点Java学院整理

1.引言 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的.然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合.但是,商业计算往往要求结果精确,例如银行存款数额,这时候BigDecimal就派上大用场啦. 2.BigDecimal简介 BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组

实例详解JSON取值(key是中文或者数字)方式

JSON取值(key是中文或者数字)方式详解 先准备一个json对象用于演示 var json = {'name':'zhangsan', '年龄':23, 404:'你可能迷路了'}; 1.使用JS中with关键字 with(json) { console.log(name);//输出:zhangsan console.log(年龄);//输出:23 console.log(404);//输出:404,用这种方法读取key是数字的属性,有问题 } 2.最常见的传统的读取key console.

Java回调函数实例代码详解

首先说说什么叫回调函数? 在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就 称为回调.在调用接口时,需要严格的按照定义的参数和方法调用,并且需要处理函数的异步,否则会导致程序的崩溃. 这样的解释似乎还是比较难懂,这里举个简 单的例子: 程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序.程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法.目的达到

Java Runtime类详解_动力节点Java学院整理

一.概述 Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用.一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为. 当不被信任的代码调用任何Runtime方法时,常常会引起SecurityExc

Java Scaner类详解_动力节点Java学院整理

Java.util.Scanner是Java5.0的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java API文档中列举了大量的API方法,但是都不怎么地. 一.扫描控制台输入  这个例子是常常会用到,但是如果没有Scanner,你写写就知道多难受了. 当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象.如果要获取输入的内容,则只需要

详解 Corba开发之Java实现Service与Client

详解 Corba开发之Java实现Service与Client 1      概述 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程 序体系规范.或者说 CORBA体系结构是OMG为解决分布式处理环境(DCE)中,硬件和软件系统的互连而提出的一种解决方案. OMG:Object Management Group,对象管理组织.是一个国际化的.开放成员的.非盈利性的计算机行业标准协