面向对象类的设计
设计一个类替代数组可以做的事
充当一个小容器 能添加元素 获取元素 删除元素
充当一个小容器 能添加元素 获取元素 删除元素
package com.sum1; public class ArrayBox { //设计一个类替代数组可以做的事 //充当一个小容器 能添加元素 获取元素 删除元素 //属性 public int[] elementData = new int[10];//用数组来存储元素 int size=0;//记录数组中存放元素的个数 //方法 //设计一个方法 该方法删除指定位置的元素 public void remove(int index){ int BeDel = elementData[index]; for(int i=index;i<size-1;i++){ elementData[i] = elementData[i+1]; } elementData[--size]=0; } //设计一个方法 该方法可以判断元素是否存在 public void isExist(int index){ if(index<0 || index >= size){//如果index不满足条件 则抛出异常 throw new BoxIndexOutOfBoundsException("index:"+index+"size:"+size); } } //设计一个方法 该方法比较数组长度与用户需要长度 public void ensureCapacity(int minCapacity){ if(minCapacity > elementData.length){//数组长度比用户需要的小 则需要进行扩容 this.enLarge(minCapacity); } } //设计一个方法 该方法扩大数组的容量 public void enLarge(int minCapacity){ int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity>>1);//先设置新的数组长度为原先的1.5倍 if(newCapacity < minCapacity){//如果还未达到用户需要的最小长度,则直接使用用户需要的最小长度 newCapacity = minCapacity; } elementData = this.CopyOfOld(elementData,newCapacity); } //设计一个方法,将旧数组的元素全部搬运到新数组中来,将生成的新数组返回 public int[] CopyOfOld(int[] oldArray,int newCapacity){//传递两个参数,一个是旧数组,一个是新数组的长度 int[] newArray = new int[newCapacity];//定义一个新数组 for(int i=0;i<oldArray.length;i++){//搬运数组元素 newArray[i] = oldArray[i]; } return newArray; } //设计一个方法 该方法能添加元素 public boolean add(int element){//方法执行后返回添加完元素后的数组 //判断比较数组长度与用户需要长度 ensureCapacity(size+1);//有效元素长度加1 elementData[size++] = element;//将用户传递参数添加到数组中 return true; } //设计一个方法 该方法能获得数组元素 public int get(int index){ //判断index位置是否有元素存在 this.isExist(index); return elementData[index]; } //设计一个方法 该方法能删除数组中元素,返回删除元素后的数组 public int[] delete(int index){ //判断index位置是否有元素存在 this.isExist(index); //调用方法删除元素 this.remove(index); return elementData; } }
package com.sum1; public class BoxIndexOutOfBoundsException extends RuntimeException{ public BoxIndexOutOfBoundsException(){} public BoxIndexOutOfBoundsException(String msg){}
}
package com.sum1; public class Test { public static void main(String[] args) { ArrayBox array = new ArrayBox();//创建一个ArrayBox的对象 for(int i=1;i<=5;i++){//执行add()方法 array.add(i*10); } System.out.println(array.size); int e = array.get(1);//执行获取元素方法 System.out.println(e); array.delete(2);//执行删除元素方法 for(int i=0;i<array.size;i++){ System.out.print(array.elementData[i]+" "); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!