toString和new String


上一篇 浅谈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

猜你喜欢

转载自blog.csdn.net/qq_45764888/article/details/126194137