首页 > 解决方案 > 如何在java中交换两个日期

问题描述

这是我的代码。我在其中缺少什么?

public class Date {

    public static void main(String[] args) {
        Date dt[] = new Date[2];
          dt[0] = new Date(1,2,3);
          dt[1] = new Date(4,5,6);

        System.out.println("Before: "+dt[0]+" "+dt[1]);
        swap(dt[0],dt[1]);
        System.out.println("After: "+dt[0]+" "+dt[1]);
    }
    public void swap(Date dArr[]){
        Date temp ;
        temp = dArr[0];
        dArr[0]=dArr[1];
        dArr[1]=temp;
    }
}


输入:d1 = 1/2/3 d2 = 4/5/6 输出:d1 = 4/5/6 d2 = 1/2/3

标签: java

解决方案


public void swap(Date dArr[]){
    Date temp ;
    temp = dArr[0];
    dArr[0]=dArr[1];
    dArr[1]=temp;
}

您的swap方法将 []Date作为参数,并交换给定数组的第一个和第二个元素。

现在,你调用swap这样的方法:

swap(dt[0],dt[1]);

你实际上传递了两个Date对象。该swap方法创建一个隐式[]Date 对象作为输入参数,其第一个元素是dt[0]和第二个元素dt[1]。请注意,此 Date 数组与您的 不同Date dt[],它们彼此独立。您可以认为Date dArr[]包含两个指向old中Date对象的指针Date dt[]。当你调用时dArr[0]=dArr[1];,你只是让指针指向另一个 Date 对象,你不能影响Date dt[].

如果你想改变原来的Date dt[],你应该将dt本身作为参数传递:

swap(dt)

推荐阅读