提问一个运行结果
有以下程度段:
int i = 100;
String s = String.valueOf(i);
System.out.pintln(s);
byte[] b = s.getBytes();
System.out.pintln(b);
怎么运行结果是这样: 100
[B@a90653
------解决方案--------------------100 这个不需要解释了, s的值就是这个...
[B@a90653 这里b的类型是byte[], 在Java中数组也是对象, 是对象就继承了Object的toString()方法, System.out.println(b)就是调用b.toString(), 然后将结果输出到控制台, 数组的toString()实现就是这样..
------解决方案--------------------UP一下,楼上基础好强
------解决方案--------------------jk88811(你的就是我的,我的还是我的~!)
給大家在講的詳細一點嗎!!
------解决方案--------------------println()这个函数的参数中没有字节数组的,
所以不能像输出字符串一样,输出字符串的值,
而只能按对象输出,因为对象继承了object的toString()方法,所以将
用来标识对象的那个值输出,这个我也不是太清楚,如果说的有错,请不要见怪
不过我还是建议楼主,没事多看看API
------解决方案--------------------public static String convertArrayType(Class type) {
String arrayTypeName = type.getName();
String elementTypeName = null;
if(arrayTypeName.length() == 2)
{
if(arrayTypeName.equals( "[I "))
{
elementTypeName = "int ";
}
else if(arrayTypeName.equals( "[J "))
{
elementTypeName = "int ";
}
else if(arrayTypeName.equals( "[B "))
{
elementTypeName = "byte ";
}
else if(arrayTypeName.equals( "[S "))
{
elementTypeName = "short ";
}
else if(arrayTypeName.equals( "[C "))
{
elementTypeName = "char ";
}
else if(arrayTypeName.equals( "[F "))
{
elementTypeName = "float ";
}
else if(arrayTypeName.equals( "[D "))
{
elementTypeName = "double ";
}
else if(arrayTypeName.equals( "[Z "))
{
elementTypeName = "bool ";
}
else
{
throw new
RuntimeException( "没有此数组类型 "+ arrayTypeName + "]. ");
}
}
else
{
elementTypeName = arrayTypeName.substring(2,arrayTypeName.length() - 1);
}
return elementTypeName;
}