1楼的做法是有问题的,看看toArray的源码就知道了,如果传入的数组长度为0的话,则没有作用。
应改为
Byte[] b = new Byte[arr.size()];
arr.toArray(b);
另外要说的是转换回来的数组并不是byte基本类型的数组,而是Byte类型的数组。
应改为
Byte[] b = new Byte[arr.size()];
arr.toArray(b);
另外要说的是转换回来的数组并不是byte基本类型的数组,而是Byte类型的数组。
解决方案 »
- 急啊!今晚就要交了!一个关于用JPanel实现画板的问题
- JAVA 二围数组输出过程
- java 基本问题! 求达人!
- 怎样引用另外一个文件的类?
- 为什么编译会出现错误,望大哥们指点,小弟在线等!
- java Applet 图像加载
- 怎么把一个字符串转化为date类型?
- 有哪位兄弟知道水晶报表9.0(Crystal)企业版中的那个Report Application Server (RAS)的密码是多少??高分求救。
- RandomAccessFile 类的对象有向文件写字符的方法吗?如果有怎么用?
- 我的性能图怎么会出这种问题呢!!!!!到底怎么回事啊??我好伤心的,GG救救我拉!那个JScrollPane到底有什么玄机啊~~~~~~~~~~~~~~~~~~~~
- java调用自己封装的类库
- quartz相关
public static String[] toStringArray(List<String> strList) {
String[] array = new String[strList.size()];
strList.toArray(array);
return array;
}
public static void main(String[] args) {
List<String> strList = new ArrayList<String>();
strList.add("Monkey");
strList.add("Cat");
strList.add("Pig");
strList.add("Rabbit");
toStringArray(strList);
for (int i = 0; i < toStringArray(strList).length; i++) {
System.out.println(toStringArray(strList)[i]);
}
}
arr.add(new Byte((byte)1));
arr.add(new Byte((byte)2));
arr.add(new Byte((byte)3));
System.out.println(arr.toArray(new Byte[0]));
for(byte b:arr.toArray(new Byte[0])){
System.out.println("-->"+b+"<--");
}
明显是可以的嘛
public Object[] toArray(Object aobj[])
{
if(aobj.length < size)
return (Object[])Arrays.copyOf(elementData, size, ((Object) (aobj)).getClass());
System.arraycopy(((Object) (elementData)), 0, ((Object) (aobj)), 0, size);
if(aobj.length > size)
aobj[size] = null;
return aobj;
}
可以看到如果传一个长度小于list size的数组 会调用 Arrays.copyOf方法
否则 调用System.arraycopy方法
如果长度大于list.size 会把copy完成的数组的第length个对象置为null
arr.add(new Byte((byte) 1));
arr.add(new Byte((byte)2));
arr.add(new Byte((byte)3));
Byte[] bytes = new Byte[arr.size()];
arr.toArray(bytes);
Byte[] result=new Byte[len]
while(--len>=0){
result[len]=arr.get[len];
}
int len=arr.length;
Byte[] result=new Byte[len]
while(--len>=0){
result[len]=arr.get[len];
}
arr.add(new Byte((byte)1));
arr.add(new Byte((byte)2));
arr.add(new Byte((byte)3));
System.out.println(arr.toArray(new Byte[0]));
for(byte b:arr.toArray(new Byte[0])){
System.out.println("-->"+b+"<--");
}
这样也是可以的
不过改动成这样就不行了
ArrayList<String> al = new ArrayList<String>();
al.add("th");al.add("is");al.add("oo");
String [] s=new String[0];
al.toArray(s);
for(String st:s)System.out.println(st);必须改成String [] s = new String[3];