我们在平时工作中做Base6编解码数据转字符串时经常会遇到toString()与new String(),对于这两者的用法区别简单总结一下。
测试用例:
@Test public void myTest1() { String value = "01234567012345670123456701234567"; String base64String = Base64.toBase64String(value.getBytes()); System.out.println("Base64编码:" + base64String ); byte[] decode = Base64.decode(base64String); System.out.println("Base64解码:" + decode ); }
输出结果:
Base64编码:MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1Njc=
Base64解码:[B@73d4cc9e
对解码后的数据处理:
在上边的测试用例稍加改动:
@Test public void myTest1() { String value = "01234567012345670123456701234567"; String base64String = Base64.toBase64String(value.getBytes()); System.out.println("Base64编码:" + base64String ); byte[] decode = Base64.decode(base64String); System.out.println("Base64解码:" + decode ); String newString = new String(decode); System.out.println("newString结果:" + newString ); String toString = decode.toString(); System.out.println("toString结果:" + toString ); }
输出结果:
Base64编码:MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1Njc=
Base64解码:[B@73d4cc9enewString结果:01234567012345670123456701234567
toString结果:[B@73d4cc9e
对比一下发现,相同的字节数组格式的解码数据,在做字符串转换时,输出的结果区别很大,哪一个用法是正确的?为什么?
这里应该用new String()的方法,因为Base64是一种转换编码格式的算法。
- toString():是调用了Object类中的toString()方法。一般是返回这么一个String:[class name]@[hashCode],实际上就是对象的哈希值。
这点可以从toString()方法的源码看出
调用该方法将获取一个String:[class name]@[hashCode] 这么一个字符串对象。
- new String(byte[] parameter):入参parameter是一个字节数组,使用java虚拟机默认的编码格式,将这个入参字节数组解码转换为对应的字符。若虚拟机默认的编码格式是ISO-8859-1,按照ascii编码表即可得到字节对应的字符。
- new String():一般使用字符转码的时候,即字节数组转换为字符串的时候。比如在对数据做编解码/加解密转为二进制字符串时,就可以直接使用此方法进行转换处理。
- toString():将对象打印输出的时候,或者需要获取对象的地址的时候使用
热门文章
- 「4月1日」最高速度18.9M/S,2025年Shadowrocket/Clash/V2ray/SSR每天更新免费机场订阅链接
- 开一个宠物店怎么样(开一个宠物店怎么样呢)
- 「4月12日」最高速度19.4M/S,2025年Shadowrocket/V2ray/SSR/Clash每天更新免费机场订阅链接
- 「3月14日」最高速度20.4M/S,2025年SSR/Shadowrocket/Clash/V2ray每天更新免费机场订阅链接
- 「4月26日」最高速度18.6M/S,2025年Clash/SSR/V2ray/Shadowrocket每天更新免费机场订阅链接
- 动物疫苗的储存不合格区什么颜色的线(动物疫苗运输与储存规范)
- 给宠物医院的好评怎么写(给宠物医院的好评怎么写简短)
- 宠物粮加工需要多少钱一吨呢图片(宠物粮加工需要多少钱一吨呢图片大全)
- 「4月10日」最高速度21.6M/S,2025年V2ray/Clash/SSR/Shadowrocket每天更新免费机场订阅链接
- 「4月16日」最高速度21.9M/S,2025年SSR/Shadowrocket/V2ray/Clash每天更新免费机场订阅链接