JAVA里面關於byte數組和String之間的轉換問題(裝)


JAVA里面關於byte數組和String之間的轉換問題 
  引自:http://soniccyj.bokee.com/6175850.html 
  JAVA里面關於byte數組和String之間的轉換問題 
  把byte轉化成string,必須經過編碼。 
  例如下面一個例子: 
  import java.io.UnsupportedEncodingException; 
  public class test{ 
  public static void main(String g[]) { 
  String s = "12345abcd"; 
  byte b[] = s.getBytes(); 
  String t = b.toString(); 
  System.out.println(t); 
  } 
  } 
  輸出字符串的結果和字符串s不一樣了. 
  經過以下方式轉碼就可以正確轉換了: 
  public class test{ 
  public static void main(String g[]) { 
  String s = "12345abcd"; 
  byte b[] = s.getBytes(); 
  try { 
  String t = new String(b); 
  System.out.print(t); 
  } catch (Exception e) { 
  e.printStackTrace(); 
  } 
  } 
  } 
  引自:http://topic.csdn.net/t/20050404/10/3906398.html 
  String str = "String"; 
  byte[] byte1 = str.getBytes(); 
  String str1 = new String(byte1); 
  byte[] byte2 = str1.getBytes(); 
  String str2 = new String(byte2); 
  System.out.println("str<<<" + str); 
  System.out.println("byte1<<<" + byte1); 
  System.out.println("str1<<<" + str1); 
  System.out.println("byte2<<<" + byte2); 
  System.out.println("str2<<<" + str2); 
  ------------------------------------- 
  輸出結果 
  str<<<String 
  byte1<<<[B@192d342 
  str1<<<String 
  byte2<<<[B@6b97fd 
  str2<<<String 
  想請教為什么兩個byte輸出的不一樣呢? 
  String str = "String"; 
  byte[] byte1 = str.getBytes(); 
  String str1 = new String(byte1); 
  byte[] byte2 = str1.getBytes(); 
  ---------- 
  注意byte1是str得到的byte數組,而byte2是另一個字符串str1得到的數組 
  他們本身也是兩個對象 
  直接打印實際上調用的是toString()方法,而toString()的默認實現是打印對象類型+hashCode() 
  [B表示byte數組 
  @表示之后的是地址 
  后面跟着的是hashCode,其實就是其虛擬機地址 
  所以這個結果也就是順理成章了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM