用Java创建的整形线性表为什么运行出来没有数据而是一一串地址呢?

package cheapter2_2;

public class Homework<E> {
    final int initcapacity = 10;
    public E[] data;
    public int size;
    private int capacity;
    
    //构造方法
    public Homework(){
        data = (E[])new Object[initcapacity];
        capacity = initcapacity;
        size = 0;
    }
    
    //创建线性表
    public void CreateList(E[] a)                    //由a整体建立顺序表
    {
        int i,k=0;
        for (i=0;i<a.length;i++) {
            if (size==capacity)                        //出现上溢出时
                updatecapacity(2*size);                        //扩大容量
            data[k]=a[i];
            k++;                                    //添加的元素个数增加1
        }
        size=k;                                        //设置长度
    }
    
    
    //更新容量
    public void updatecapacity(int newcapacity){
        E[] newdata = (E[]) new Object[newcapacity];
        for(int i = 0;i<size;i++)
            newdata[i] = data[i];
            capacity = newcapacity;
            data = newdata;
    }
    
    //创建删除方法:删除原线性表中值为负数的值
    public void RemoveNegativeNum(Homework E){
        for(int j = 0;j<size;j++){
            int x = (int) E.data[j];
            if(x<0)
            data[j] = data[j+1];
            size--;
        }
        if(capacity > initcapacity && size == capacity/4)
            updatecapacity(capacity/2);
    }

}

 

//测试类

package cheapter2_2;

public class HomeworkTest {
    public static void main(String[] args){
        
        Integer [] a={1,2,-1,-2,3,-3};
        Homework<Integer> L1=new Homework<Integer>();
        L1.CreateList(a);
        System.out.println("删除前L1:"+L1.toString());
        L1.RemoveNegativeNum(L1);
        System.out.println("删除后L1:"+L1.toString());
        
        Integer [] b={2,-1,-5,6,-7,4,-5,8};
        Homework<Integer> L2=new Homework<Integer>();
        L1.CreateList(b);
        System.out.println("删除前L2:"+L2.toString());
        L2.RemoveNegativeNum(L2);
        System.out.println("删除后L2:"+L2.toString());
        
    }
}
 

 

重写一下toSpring方法

 

运行结果

删除前L1:Homework{initcapacity=10, data=[1, 2, -1, -2, 3, -3, null, null, null, null], size=6, capacity=10}
删除后L1:Homework{initcapacity=10, data=[1, 2, -2, -2, 3, -3, null, null, null, null], size=3, capacity=10}
删除前L2:Homework{initcapacity=10, data=[null, null, null, null, null, null, null, null, null, null], size=0, capacity=10}
删除后L2:Homework{initcapacity=10, data=[null, null, null, null, null, null, null, null, null, null], size=0, capacity=10}

//新添加代码
    @Override
    public String toString() {
        return "Homework{" +
                "initcapacity=" + initcapacity +
                ", data=" + Arrays.toString(data) +
                ", size=" + size +
                ", capacity=" + capacity +
                '}';
    }

 

运行出来是这个:

删除前L1:cheapter2_2.Homework@15db9742
删除后L1:cheapter2_2.Homework@15db9742
删除前L2:cheapter2_2.Homework@6d06d69c
删除后L2:cheapter2_2.Homework@6d06d69c

有点弄不懂了