网站首页 > java教程 正文
开发中经常遇到从集合类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" ");//执行
}
}
猜你喜欢
- 2024-11-21 Java整数和浮点数类型转换
- 2024-11-21 JavaSE基础之多态的应用场景
- 2024-11-21 第二章:Java数据类型和运算符
- 2024-11-21 int强转为byte类型么?会产生什么问题?
- 2024-11-21 Java接口&异常处理&类型转换
- 2024-11-21 详解 Java 17 中的模式匹配(Pattern Matching)
- 2024-11-21 Java基本数据类型之间的转换规则
- 2024-11-21 [JAVA冷知识]什么是逆变与协变?数组是否支持协变&逆变?泛型呢?
- 2024-11-21 看完后让你成为武松,手把手教你打死Java中的纸老虎
- 2024-11-21 Java中的换形师-数据类型转换
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)