day11

本文介绍了Java初学者如何创建SequentialList类,探讨了对象、重载和重写的概念,并通过实例展示了如何使用这些技术。作者强调了面向对象编程在数据结构中的重要性,以及对重载和重写概念的理解和应用。
摘要由CSDN通过智能技术生成

Day11 —— Sequential List

1. Background

今天是学习java的第11天,结束了java基础的,转到了数据结构的学习。

今天学习的内容是用java创建顺序表,及其一些操作。

2. Description

2.1 Object

对象:数据及其上操作的总和。由于java是面向对象编程的语言,所以弄懂面向对象是非常重要的。

2.2 Overload

重载(Overload),在我的理解里面是在同一个类中,相同的方法名,但是里面传参不一样,就可以把这两个看作不同的方法。在今天的代码中SequentialList(int[] paraArray)这个方法,就用到了重载。

2.3 Override

重写(Override),我对其的理解没有重载深入,在我看来这个顾名思义,就是把原来的方法覆盖掉了,不管传参怎么样,简单粗暴的把原来的方法覆盖就完事。这个一般用在子类对父类的方法覆盖中。

以上均属个人浅薄理解,具体的可以看看菜鸟教程对其的解释Overload and Override

3. Code

package basic;

public class SequentialList {
    /**
     * The max length of list.
     */
    public static final int MAX_LENGTH = 20;

    int length;

    /**
     * The data stored in the array.
     */
    int[] data;

    /**
     * Construct an empty sequential list.
     */
    public SequentialList() {
        length = 0;
        data = new int[MAX_LENGTH];
    }// Of the SequentialList

    /**
     ******************
     * Overload the method.The length of paraArray must be not exceed MAX_LENGTH.
     * 
     * @param paraArray is the given array.
     ******************
     */
    public SequentialList(int[] paraArray) {
        data = new int[MAX_LENGTH];
        length = paraArray.length;

        // Copy data
        for (int i = 0; i < paraArray.length; i++) {
            data[i] = paraArray[i];
        } // Of for i
    } // Of the second constructor

    /**
     ******************
     * Overrides toString.
     ******************
     */
    public String toString() {
        String resultString = "";

        if (length == 0) {
            return "empty";
        } // Of if

        for (int i = 0; i < length - 1; i++) {
            resultString += data[i] + ", ";
        }

        resultString += data[length - 1];
        return resultString;
    } // Of to String

    /**
     * 
     * Reset to empty.
     * 
     */
    public void reset() {
        length = 0;
    } // Of reset

    public static void main(String[] args) {
        int[] tempArray = { 1, 3, 5, 7, 9 };
        SequentialList tempFirstList = new SequentialList(tempArray);
        System.out.println("Initialized, the list is: " + tempFirstList.toString());
        System.out.println("the list is" + tempFirstList);

        tempFirstList.reset();
        System.out.println("After reset, the list is: " + tempFirstList);
    } // Of main

} // Of SequentialList

运行结果:

在这里插入图片描述

4. Summarize

今天的学习对我来说无疑是收获最大的,也是最吃力的。

由于第一次接触java,之前学习的数据结构也都是基于C语言的,在今天的学习之前,压根没有重载和重写这个概念。虽然现在知道了之后觉得这个很简单,但是在不知道这个概念之前,代码我看起来总觉得晦涩难懂。

总的来说,收获很大吧,不管是代码,还是我在写代码途中去查阅的资料。

PS:在重写toString方法里面。for循环copy数据,只循环到倒数第二个,不是因为最后一个是\0,仅仅只是为了让最后一个元素后面没有逗号’,’。java中数组最后没有\0,这点和C语言不一样。对于这个,我的理解是,不要用面向过程的思维来思考面向对象。在java中everything is object,这点字符串也不例外,字符串本身就是一个对象,本身就有着length这个属性,因此可以直接判定其边界,不需要\0这种东西。

最后就是,老师的代码第一句:package datastructure.list;这个我放上去始终报错。我的猜想是datastructure.list这个包名不规范,所以把程序又移回了basic包里面,这才成功运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值