读书人

关于形参数组的扩容有关问题

发布时间: 2012-11-03 10:57:44 作者: rapoo

关于形参数组的扩容问题
import java.util.Arrays;
public class AnimalsDemo{
public static void main(String[] args){
Animal[] animals = new Animal[2];
animals[0] = new Animal("dog");
animals[1] = new Animal("cat");

add(animals,new Animal("bird"));
System.out.println(Arrays.toString(animals));
}
public static void add(Animal[] animals,Animal animal){
if(animals!=null){
animals=Arrays.copyOf(animals,animals.length+1);
animals[animals.length-1] = animal;
}else{
System.out.println("数组为空");
}
}
}
class Animal{
String name;
public Animal(String name){
this.name = name;
}
public String toString(){
return this.name;
}
}
最后输出的结果是[dog,cat],调用add()方法没有达到扩容效果,为什么?求大虾帮帮忙,谢谢!

[解决办法]
import java.util.Arrays;
public class AnimalsDemo{
public static void main(String[] args){
Animal[] animals = new Animal[2];
animals[0] = new Animal("dog");
animals[1] = new Animal("cat");

add(animals,new Animal("bird"));
System.out.println(Arrays.toString(animals)+":"+animals.length);
}
public static void add(Animal[] animals,Animal animal){
if(animals!=null){
animals=Arrays.copyOf(animals,animals.length+1);
animals[animals.length-1] = animal;
System.out.println(animals.length+"----------");
}else{
System.out.println("数组为空");
}
}
}
class Animal{
String name;
public Animal(String name){
this.name = name;
}
public String toString(){
return this.name;
}
}
执行下吧,就知道问题在哪了。
[解决办法]

探讨
数组在java里不是对象么?add()方法中,形参和实参数组同时指向同一引用数组对象,方法执行完,实参数组应该也扩容了? 为什么没扩容呢

读书人网 >J2SE开发

热点推荐