toString()とnew String()の使用法の違い
TestString.java
package com.atguigu;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
/**
* TestString
* toString 和 new String 原理和区别
*/
public class TestString {
public static void main(String[] args) {
// 表示密文
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);
}
}
どちらが正しいですか?どうして?
Base64の暗号化と復号化はエンコード形式の変換の原則であるため、ここでは新しいString()メソッドを使用する必要があります。
toString()とnew String()の使用法の違い
str.toStringは、このオブジェクトを呼び出したクラスのtoStringメソッドです。通常、このような文字列が返され ます:[クラス名] @ [hashCode]
new String(str)は、パラメータに基づくバイト配列であり、Java仮想マシンのデフォルトのエンコード形式を使用して、このバイト配列を対応する文字にデコードします。仮想マシンのデフォルトのエンコード形式がISO-8859-1の場合、バイトに対応する文字はASCIIエンコードテーブルに従って取得できます。
いつどのような方法を使用しますか?
new String()が一般的に文字トランスコーディングを使用する場合、byte []配列の場合
オブジェクトを印刷するときに使用されるtoString()