关于Java String 类型转换时null的问题
开发中经常遇到从集合类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 strByToString = obj.toString(); //toString 必须保证不为null,否则java.lang.NullPointerExceptionString strByString </span>=<span style="color: #000000;"> (String) obj;
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" ");//执行
}
}
[转]C# Invoke和BeginInvoke的区别
[转]RAID0、RAID1、RAID0+1、RAID5原理介绍
【引用】Dashboard设计思路
[Resolution]Your search cannot be completed because this site is not assigned to an indexer
A Brief Introduction to Boolean Algebra(布尔代数简介)
[转]从头开始安装Eclipse和VE
[转]领导者如何问更好的问题
如何使用花生壳(www.oray.com)实现动态域名映射(DDNS)
如何手动删除Windows服务
- 最新文章
-
[引]C#中的正则表达式
[转]SharePoint Designer工作流的扩展
[转]Java中运行时异常与一般异常的异同
网站注入与防范
[解决]MySQL数据库启动时,出现内存不能为read
在HTML中实现上划线,中划线和下划线
进度条实现示例
如何在EA(Enterprise Architect)中自定义数据类型(Data Type)
[转]2010年九大最佳开源企业应用软件
Online Unicode Character Map(在线Unicode字符映射)
- 热门文章
-
[转]单元测试、集成测试、系统测试、验收测试、回归测试
SQL中 Inner Join(内连),Left Join(左连),Right Join(右连),Full Join(全外连) 之间的区别
[转]C#数字格式化方法全面解析
[解决]IE9停止工作并多次重启失败模块:EmbedDetectNow.dll
[解决]SharePoint 2010 安装错误—未能创建配置数据库(Failed to Create Configuration Database)
[转]J2ME,J2SE和J2EE三者的区别与联系
同比、环比、定基比
如何在Google翻译页面的URL中设置翻译语言
[FW]How to improve website performance
高并发高流量网站架构(笔记)
Copyright © 2011-2022 走看看
