关于java的一些编译问题。大家一定要帮帮我呀。感谢了

来源:百度知道 编辑:UC知道 时间:2024/06/02 03:43:59
我编译的时候是正确的,看看下面的一些例子:
public class math2
{
public static void main(String[] args)
{
byte[] b={1,2,3};
String str=new String(b);
System.out.println(str);
}
}
编译的是正确的,但是运行的时候就出现了一些图案:
E:\Java lesson\book>javac math2.java

E:\Java lesson\book>java math2


E:\Java lesson\book>
并不是输出的是123呢,我有点纳闷了,是不是环境变量出错了呢,求求大家帮帮我呀,

byte[] b={49,50,51};
String str=new String(b);
System.out.println(str);
这样就可以了 你上面程序得到的是ascii码为1 2 3 所代表的字符组合

我刚写的一个方法不知道是不是你想要的

public class math2
{
public static final String arrayToString(byte[] bytes)
{
StringBuffer buff = new StringBuffer();
for (int i = 0; i < bytes.length; i++)
{
buff.append((char)bytes[i]);
}
return buff.toString();
}
public static void main(String[] args)
{
byte[] b={'1','2','3'};

String str =arrayToString(b);

System.out.println(str);

}
}

这个问题嘛
字符串的构造函数String(byte[] b)是将byte数组中的每一项对应的ascii码字符组成新的字符串
1,2,3所对应的ascii码都是控制字符,无法显示,所以是乱码。

程序行为是正常的, 只是跟你想的不一样. 其实是你想错了. 去问老师吧.

大哥 你疯了。。