byte [] buff = "Good morning!SIR!".getBytes();
String Test1 = buff.toString();
String Test2 = new String(buff);请问Test1和Test2的内容有什么区别?
toString转换和new一个String转换有什么不同的,为什么Test1和Test2输出结果差那么多?
String Test1 = buff.toString();
String Test2 = new String(buff);请问Test1和Test2的内容有什么区别?
toString转换和new一个String转换有什么不同的,为什么Test1和Test2输出结果差那么多?
解决方案 »
- java中使用jawin 调用dll怎么传递参数,有多个参数?
- 新手想问下,java和jdbc有什么关系,JDBC又有什么作用
- 求一段多线程代码
- java中关于paint(),repaint()和paintComponent()之间的关系
- 哪位大哥帮我解释一下代理?
- 谁有有关象棋类游戏的算法资料吗?
- 侃侃这个Java程序,很有意思
- 如果我使用或者覆盖了一个不鼓励使用的API,会有什么后果,我怎么知道那些API不鼓励覆盖?
- Java socket作为客户端连接mina server(银联多渠道离线仿真模拟器)
- 关于字符串拆分的问题
- 请问Struts2核心拦截器的这种功能是怎么实现的?
- 数据问题,Double数据相加后,小数位数增加,请问如何解决!
public static void main(String args[]) {
byte [] buff = "Good morning!SIR!".getBytes();
String Test1 = buff.toString();
String Test2 = new String(buff);
for(int i=0;i<buff.length;i++) {
System.out.print((char)buff[i]);
}
System.out.println();
System.out.println(Test2);
}这样试试, 你只接打印数组的话打印出来的不是他的值,好像是他的
类对象实例, 我不知道说的对不对
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
这个方法是在byte数组上调用toString()方法时jdk的默认实现。如你使用
System.out.println(buff)时,系统将默认调用toString()方法,返回byte数组的字符串表示;
而String Test2 = new String(buff); 是用这个byte数组来构造一个String实例,他的返回值就是byte数组中的字符串(将每一个数组元素append到一个字符实例),jdk中的实现如下:
public String(byte bytes[], int offset, int length) {
checkBounds(bytes, offset, length);
char[] v = StringCoding.decode(bytes, offset, length);
this.offset = 0;
this.count = v.length;
this.value = v;
}
所以,得到的结果当然不一样了。