首页 > 编程语言 >java Object转String的4种实现方式

java Object转String的4种实现方式

时间:2023-08-25 10:44:28浏览次数:67  
标签:map java String Object System println null out

1.情景展示

在实际开发过程中,经常会遇到将Object类型强转成String类型。

Object转String一共有几种实现方式?

2.具体分析

共有三种实现方式。

3.解决方案

以Map<String, Object>进行举例说明。

Map<String, Object> map = new HashMap<>(3);
map.put("k1", "v1");
map.put("k2", 2);
map.put("k3", "");
map.put("k4", null);

方式一:强制转换

key=k1可以进行强制转换成String类型,因为它本身就是String类型。

String k1 = (String) map.get("k1");
System.out.println(k1);// v1

key=k2,不能强转成String类型,因为它的值是int类型。

String k2 = (String) map.get("k2");// 类型转换异常

 key=k3,它对应的值,虽然是空字符串,但本质上也是String类型,所以可以转String。

String k3 = (String) map.get("k3");
System.out.println(k3);// 空字符串""

 key=k4,它对应的值为null,即不存在。虽然强转不会报错,但它对应的值依旧为:空对象null。

String k4 = (String) map.get("k4");
System.out.println(k4);// 空对象null
System.out.println(k4 == null);// true
System.out.println("null".equals(k4));// false

key=k5,由示例可知, map对象当中,没有k5,这个键(不存在的键),进行强制转换时,会发生什么?

// 不存在的key
String k5 = (String) map.get("k5");
System.out.println(k5);// 空对象null
System.out.println(k5 == null);// true
System.out.println("null".equals(k5));// false

当从map对象当中取不存在的键时,返回的值自然是空对象null。

这样一来就和key=k4,没有太大的区别了。(只不过是:k4存在,值为null;k5不存在,值必然为null) 

弊端:类型转换异常

方式二:toString()

我们知道,toString()方法,是将对象转换成String类型的方法。

k1的值本身就是String类型

String k1 = map.get("k1").toString();
System.out.println(k1);// v1

k2的值是Integer类型,调该方法后,会转换成string类型。

// 将Integer类型转换成了String类型
String k2 = map.get("k2").toString();
System.out.println(k2);
System.out.println(k2.equals("2"));// true

k3的值,本身也是String类型。

String k3 = map.get("k3").toString();
System.out.println(k3);// 空字符串""

k4和k5的值都是空对象null,调toString(),自然就会报空指针。

// 空指针异常
String k4 = map.get("k4").toString();

 弊端:空指针异常

方式三:String.valueOf()

String.valueOf()是将其它数据类型转换成String类型。

k=k1

String k1 = String.valueOf(map.get("k1"));
System.out.println(k1);// v1

k=k2,Integer类型会被转成String类型

// 将Integer类型转换成了String类型
String k2 = String.valueOf(map.get("k2"));
System.out.println(k2);
System.out.println(k2.equals("2"));// true

k=k3,空字符串"",本身就是String类型

String k3 = String.valueOf(map.get("k3"));
System.out.println(k3);// 空字符串""

k=k4和k=k5,空对象null被转成了字符串"null"

String k4 = String.valueOf(map.get("k4"));
System.out.println(k4);// 字符串null
System.out.println(k4 == null);// false
System.out.println("null".equals(k4));// true

String k5 = String.valueOf(map.get("k5"));
System.out.println(k5);// 字符串null
System.out.println(k5 == null);// false
System.out.println("null".equals(k5));// true

基本数据类型会被自动转换成String类型。

弊端:null对象会被转换成字符串"null" 

方式四:+""

这种方式,同样是将数据类型转成String类型。

效果与方式三完全一致。

String k1 = map.get("k1") + "";
System.out.println(k1);// v1

// 将Integer类型转换成了String类型
String k2 = map.get("k2") + "";
System.out.println(k2);
System.out.println(k2.equals("2"));// true


String k3 = map.get("k3") + "";
System.out.println(k3);// 空字符串""

String k4 = map.get("k4") + "";
System.out.println(k4);// 字符串null
System.out.println(k4 == null);// false
System.out.println("null".equals(k4));// true

String k5 = map.get("k5") + "";
System.out.println(k5);// 字符串null
System.out.println(k5 == null);// false
System.out.println("null".equals(k5));// true

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

标签:map,java,String,Object,System,println,null,out
From: https://www.cnblogs.com/Marydon20170307/p/17656155.html

相关文章

  • 【校招VIP】java语言考点之双亲委派模型
    考点介绍:双亲委派是校招面试中的高频考点之一。双亲委派机制定义:当一个类加载器收到了类加载的请求的时候,他不会直接去加载指定的类,而是把这个请求委托给自己的父加载器去加载。只有父加载器无法加载这个类的时候,才会由当前这个加载器来负责类的加载......一、考点题目1、为什......
  • IDEA 生成的 JAVA 接口允许跨域访问的配置
    1.新建一个基类,在类上方添加 @CrossOrigin属性importorg.springframework.web.bind.annotation.CrossOrigin;@CrossOriginpublicclassBaseController{}2.在其他controller中继承这个基类,其他接口就可以跨域访问了publicclassElseControllerextendsBaseContr......
  • 5.JAVA数组
     数组声明创建 内存的使用 定义数组时数组并不存在;只有创建数组是才存在           ......
  • 【Java】SM4Utils(国密 SM4 工具类)
    基于bouncycastle实现国密SM4<!--引入bouncycastle--><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.70</version></dependency>importlom......
  • LeetCode-21. 合并两个有序链表(Java)
    这是我在51CTO博客开启的写作之路,第一次正式写博客记录我在LeetCode的刷题日,希望能帮助更多的小伙伴攻面自己心仪的公司offer。如下对于 LeetCode-21.合并两个有序链表,进行全面解析并小结解题思路,同学们请参考:1.题目描述将两个升序链表合并为一个新的 升序 链表并返回。新链表......
  • Java设计模式
    装饰器模式:装饰器模式是指在不改变现有对象结构的情况下,动态的给改对象增加一些职责(即增加其额外功能)的模式。装饰器模式通常在以下几种情况使用。当需要给一个现有类添加附加职责,而又不能采用生成子类的方法进行扩充时。例如,该类被隐藏或者该类是终极类或者采用继承方式会产生......
  • Java的三大版本
    Java的三大版本WriteOnce、RunAnywhere一次编译,到处运行JavaSE标准版(桌面程序,控制台开发),这是学习Java的基础,必须牢固掌握。JavaME嵌入式开发(手机,小家电),这个现在基本上没有人再使用,可以忽略,但是要知道有这个版本。JavaEEE企业级开发(web端,服务器开发),学习这个版本之前先要......
  • CentOS7.9搭建开发环境(Java、MySQL、Nginx、Redis)
    系统使用的阿里云CentOS7.964位SCC版。先安装个文件上传下载工具lrzsz,xshell登录终端,运行下面的命令:yuminstall-ylszrz 这是因为yum源的问题,需要修改yum配置。执行以下命令:cd/etc/yum.repos.dmvCentOS-Base.repoCentOS-Base.repo.backupwgethttp://mirrors.......
  • Java的第一课,特性和优势
    Java的特性和优势简单性面向对象可移植性高性能分布式动态性多线程安全性健壮性以上特性和优势会在以后的博客中逐一展示,尽请期待! ......
  • Java流程控制if选择结构
    if选择结构单选择结构:编程中很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程用if语句来表示,语法:if(布尔表达式){//如果条件成立,将执行的语句}例:packageshuct;importjava.util.Scanner;publicclassIfDemo01{publicstaticvoidmain(Str......