1;其实容器就是数组,都是存放东西的一块内存,但是容器唯一不同的是,他可以放很多类型的东西,列如某个对象,字符串,数字,其实都可以写成一个对象,因为有包装类的存在嘛。因此都是Object类。
2;设计Java容器底层模拟,放在StringBudiler类的源码仿写来的。简单介绍一下,
3;一些简单步骤。就按照面向对象的设计思路来说。
3.1;需要定义一个成员变量,数组。类型应该为Object,因为容器要放对象,而Object类时所有对象的超级父类,因此则定义为Object类。
设置为private权限,增强封装性。
/**
* value就是存放Object的容器
*/
private Object[] value;
3.2; 还应该定义一个int类型成员变量,size大小,表示容器元素的个数。
也是定义为private权限
/**
* size表示这个容器的大小
*/
private int size;
3.3;一些常用类。
构造方法;就是创建对象的时候(new)的时候,此时两个成员变量的值应该为多少。
/**
* MyArrayList的构造方法,
* 并含重载方法
*/
public MyArrayList(){
this(16);//直接地调用自己的构造方法
}
public MyArrayList(int capacity){
value = new Object[capacity];
}
返回容器元素的个数。
/**
* 返回容器中对象的数目
* @return
*/
public int getLength(){
return size;
}
往容器添加元素并且进行扩容
/**
* 往容器里面添加对象
* 并且进行扩容方法。
* 并且进行赋值;
* @param obj
*/
public void add(Object obj){//备注不明白value的大小与size的区别。
value[size] = obj;
size++;
if(size >= value.length){//进行扩容;
Object[] newList = new Object[value.length*2+2];
for(int i = 0; i < value.length; i++){
newList[i] = value[i];
}
value = newList;
}
}
返回相对应某个索引的对象;
/**
* 返回该索引位置的对象;
* 其中如果该索引没在容器范围内则返回异常;
* @param index 索引也就是下标。
*
* @return
*/
public Object get(int index){
if(index < 0 || index > size-1){//如果没在范围内则返回异常;
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
return value[index];
}
删除指定索引位置的元素(对象)
/**
* 实现删除某个元素,最后返回对象本身
* @param index
* @return MyArrayList
*/
public MyArrayList delet(int index){
if((index < 0) || (index >= size)){
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
Object[] newList = new Object[size+16];
for(int i=0,l=0; i<value.length;i++){
if(i != index){
newList[l] = value[i];
l++;
}
}
value = newList;
return this;
}
主方法,调用这些方法;
/**
* main方法,
* @param args
*/
public static void main(String[] args) {
MyArrayList list = new MyArrayList();
list.add("qqweer");
list.add("pppppp");
list.add(new Human("zw"));
list.add("qqweer");
list.add("pppppp");
Human h = (Human)list.get(2);
System.out.println(h.getName());
list.delet(0);//不需要接受返回值,已经把value数组改好了
Human h1 = (Human)list.get(1);
System.out.println(h1.getName());
}
关于容器就是只是简单的模拟了几个简单的功能。
4;怎么自己生产API文档。
4.1;关于文档注释;
4.1.1;文档注释,使得文档和程序同时出现在一个界面中,这样更加方便了我们查看代码了。
4.1.2;文档注释的一些内容
关于文本注释的样式
/**
*
*/
关于三,javadoc 标记
javadoc 标记由"@"及其后所跟的标记类型和专用注释引用组成
javadoc 标记有如下一些:
@author 标明开发该类模块的作者
@version 标明该类模块的版本
@see 参考转向,也就是相关主题
@param 对方法中某参数的说明
@return 对方法返回值的说明
@exception 对方法可能抛出的异常进行说明
@author 作者名
@version 版本号
其中,@author 可以多次使用,以指明多个作者,生成的文档中每个作者之间使用逗号 (,) 隔开。@version 也可以使用多次,只有第一次有效
使用 @param、@return 和 @exception 说明方法
这三个标记都是只用于方法的。@param 描述方法的参数,@return 描述方法的返回值,@exception 描述方法可能抛出的异常。它们的句法如下:
@param 参数名参数说明
@return 返回值说明
@exception 异常类名说明
4.2;项目完成后怎么生成API文档;
4.2.1;点击项目,单击右键,进入Export输出;进入java文件夹中的Javadoc文件。
这样就是实现了API文档的生产,对于API的好处,就是可以方便以后查看。