日期:2014-05-20  浏览次数:20782 次

提问一个运行结果
有以下程度段:  
                                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;
}