栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java封装练习题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java封装练习题

需求:

思路: 

1.需求代码1~6行

创建一个名为Array的类,当不传参则调用无参构造时,可以得到长度为0的数组,声明数组时长度是不确定的,所以长度需要单独拿个变量装,待不同情况时给予值。因为直接打印数组会得到数组的地址,[  ] 为字符串,所以我们需要重写toString方法才能更方便的打印无参和多参时的俩种情况

2.需求代码7~9行

当传入参数时,把参数添加致数组最后一位,因为数组长度一旦声明无法改变,我们需要创建一个新数组,长度为老数组长度+1,这样就可以使得内容能够添加进入

3.需求代码10~结束

删除的需求出现时,我们能够联想到扩容,删除也就是缩容,只不过是新数组长度+1和-1的区别,在这个需求上加上一个if判定,当遍历数组到该下标时我们就不把它装进数组,其他的都装进新数组,最后赋值给老数组即可。需要boolean类型的返回值,就把返回值定义为boolean,需要用到该布尔值时,在调用该方法出定义一个boolean类型接收即可

以下为实现代码: Array类
public class Array {
    //数组
    public Object[] arr = new Object[0];
    //长度属性
    public int length = 0;

    //无参构造
    public Array() {
    }

    //多参构造
    public Array(Object... arr) {
        this.length = arr.length;//将传入的多参数组长度赋值给当前长度
        this.arr = arr;//把传入的多参数组内容一同赋值给这个类的数组
    }

    //重写toString方法
    @Override
    public String toString() {
        if (length == 0) {///当不传参则调用无参构造时,可以得到长度为0的数组
            return ("[ ]"); //用字符串拼接可以得到  [ ]
        }
        String str = "[";//一个简单的字符串拼接,注意灵活应用
        for (Object item : this.arr) {
            str +=" " +  item + " ";//此处" "是为了隔开数组里的内容
        }
        str += "]";
        return str;
    }

    //push
    //接收一个参数,放在数组最后一位(添加Add)
    public void push(Object value) {
      
        this.length += 1;
        Object[] newArray = new Object[this.length];//新数组
        for (int i = 0; i < this.length; i++) {
            if (i < this.length - 1) {//上面老数组长度+1,这里要-1
                newArray[i] = this.arr[i];
            } else {//添加的内容
                newArray[i] = value;
            }
        }
        //赋值内容
        this.arr = newArray;
    }

    //remove
    //接收一个下标,删除数组中该下标对应的内容(删除delete),并返回布尔值
    public boolean remove(int index) {
        //先进行判断,看接收的下标是否在这个数组长度内
        //index >= this.length,是因为数组最后一个下标是数组长度-1,所以和数组长度相同也不是在数组长度之内的
        if (index < 0 || index >= this.length) {
            return false;//不在数组里,返回false,并结束方法
        }
        //和添加如出一辙,只不过需要一个下标,用于把内容存放在新数组
        this.length -= 1;
        Object[] newArray = new Object[this.length];//新数组
        int j = 0;
        for (int i = 0; i < this.arr.length; i++) {//注意!这里是已经有内容的数组,不能取this.length
            if (index == i) {//当遍历到该下标时,跳过,不存放入新数组
                continue;
            } else {
                newArray[j] = this.arr[i];
                j++;//存放一次,往下一个下标存放
            }
        }
        //赋值内容
        this.arr = newArray;
        return true;//删除成功,返回true
    }
}
测试类,main 
public class ArrayTest {
    public static void main(String[] args) {
        //无参
        Array array = new Array();
        System.out.println(array + ",数组长度为" + array.length);
        System.out.println("===============================");
        //多参
        Array array1 = new Array("张三","李四");
        System.out.println(array1 + ",数组长度为" + array1.length);
        System.out.println("===============================");
        //调用push,往数组添加实参
        array1.push("王五");
        System.out.println(array1 + ",数组长度为" + array1.length);
        System.out.println("===============================");
        //调用remove,传入下标
        array1.remove(2);
        System.out.println(array1 + ",数组长度为" + array1.length);
        System.out.println("===============================");
    }
}
输出结果: 
[ ],数组长度为0
===============================
[ 张三  李四 ],数组长度为2
===============================
[ 张三  李四  王五 ],数组长度为3
===============================
[ 张三  李四 ],数组长度为2
===============================

(本文为接触Java不久的菜鸟所写,如有误区,还望各位大佬多多指教,菜鸟虚心受教)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995062.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号