/**
数组:存储同一类型数据的容器
缺陷:长度在数组初始化的时候就已经固定了
作业:自己写一个容器,这个容器的长度不固定,你可
以随意的往容器里添加元素
这个类里面有几个功能
我这个容器只能存int类型的数据
我们写的这个类里面实际上有一个成语变量是int数组
通过add方法将val添加到容器内
public void add(int val){}
通过给get方法传递一个索引,可以获取到该索引位置对应
的值
publci int get(int index);
通过lenth()可以获取该容器中存储了多少个数据
public int length();
*/
class ArrayCon
{
static int size = 1;// 实现数组长度的自加,改变数组长度 始终比数组长度大 1
int[] arr ; // 定义一个数组,用来接收传入的数据 取名:接收数组
/* 定义一个中间数组,用来保存传入最新数值之前的数据 取名: 中间数组
(在这里定义的话,是把ArrTemp定义到对内存中了,会一直存在) */
//int[] arrTemp ;
/**通过add方法将val添加到容器内*/
public void add(int val)
{
// 定义一个中间数组,用来保存传入最新数值之前的数据 取名: 中间数组
//(在这里定义的话变量是存放在栈内存中,方法执行结束就自动消失了)
int[] arrTemp = new int[0];
if (size == 1)
{
this.arr = new int[1]; // 改变 接收数组 的长度 (注:这是引用类型之间的赋值操作)
this.arr[0] = val; // 接收传进来的数值 并放到 接收数组 的最后一个索引里面
this.size ++; // size 自加 用于下一次的new int[size];以便能增加数组的长度
}else
{
arrTemp = this.arr; // 获取之前的数组
this.arr = new int[size]; // 更新 接收数组的 长度
this.arr[size - 1] = val; // 接收传进来的数值 并放到 接收数组 的最后一个索引里面
for (int i = 0; i <size-1; i ++)// 循环遍历 把 中间数组 中的数据 依次赋值给 接收数组
{
this.arr[i] = arrTemp[i];
}
this.size ++;// size 自加 用于下一次的new int[size];以便能增加数组的长度
}
}
/**获取到该索引位置对应的值*/
public int get(int index)
{
return this.arr[index];
}
/**通过lenth()可以获取该容器中存储了多少个数据*/
public int length()
{
return this.arr.length;
}
}
|
|