java - 如何在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
解决方案
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)
推荐阅读
- omnet++ - 在 OMNeT IDE 中导入外部对象文件
- python - cv2 网络摄像头流仅显示前几行图像
- pdf - NetSuite 高级 PDF 拣货工单
- c - C全局typedef结构但在函数内进行局部初始化,多次调用函数时结构的值不会重置
- google-apps-script - 谷歌插件/驱动器“打开方式...”支持
- google-cloud-platform - 无法将 Google Ads 连接到 BigQuery
- linq - 需要 linq 帮助:尝试向 master 添加详细信息
- url - 带有 URL 非法字符错误的 SSRS 表达式
- python - 导入错误:无法从“pdfminer.utils”导入名称“open_filename”
- kubernetes - Kubernetes Configmap 目录和子目录文件