上一篇 浅谈base64中已经简单介绍过了base64,接下来看这样一个例子,现在我们实现如下代码:
1.引言
public class TestString {
public static void main(String[] args) {
//表示base64的密文
String str="TU0jV0xBTiNVYys5bEdiUjZlNU45aHJ0bTdDQStBPT0jNjQ2NDY1Njk4IzM5OTkwMDAwMzAwMA==";
//使用base64进行解码
String rlt1=new String(Base64.decode(str));
//使用base64进行解码
String rlt2=Base64.decode(str).toString();
System.out.println("new String=="+rlt1);
System.out.println("toString=="+rlt2);
}
}
运行结果:
new String==MM#WLAN#Uc+9lGbR6e5N9hrtm7CA+A==#646465698#399900003000
toString==[B@7d4991ad
那么这两种结果究竟哪一个是正确的呢?
答:这里应该用new String()的方法,因为Base64加解密是一种转换编码格式的原理
☆注意:如果在使用编码进行加密、解密的时候,需要使用new String这种方式
2.toString()与new String()对比
·str.toString方法:这个方法调用的实际上是object里面的tostring方法,一般在object的tostring方法,返回的实际上是哈希值(地址)
·new String方法:是根据参数,参数是一个字节数组,使用java虚拟机默认编码格式,会把这个字节数组进行decode,找到对应的字符,如果虚拟机的编码格式是ISO-8859-1,会去找ascii里面的编码进行参照,找对应的字符。
3.应用场景
new String():一般在进行字符转码(使用byte[]字节数组)的时候,需要使用newString
般在进行字符转码(使用byte[]字节数组)的时候,需要使用newString
toString:做对象打印的时候,或者想得到地址的时候,就使用toString