关于Java中交换数组中的两个元素的一个错误笔记
来源:互联网 发布:mysql 主键是索引吗 编辑:程序博客网 时间:2024/06/05 07:47
从大一就开始学习Java了,到现在还是经常出现看似低级的错误。端午假期写一道算法题的时候就栽在数组元素交换上了。开始的时候写了一个用于交换的函数:
public static void swap(int x,int y){int z = x;x = y;y = z;}没什么技术含量,就是以前经常使用的借助一个临时的z,来实现x与y的交换。但是当把这个函数应用于下面的nums数组的时候,nums根本没有变化。
int[] nums = new int[5];for(int i = 0;i<5;i++)nums[i] = i;System.out.println("第一种方法");swap(nums[3],nums[4]);for(int i = 0;i<5;i++)System.out.print(nums[i]);于是乎,凭写代码的直觉来讲,这应该是值与地址的区别之类的原因。于是又写了下面一个函数:
public static void swap(int[] array,int x,int y){int xx = array[x];int yy = array[y];array[x] = yy;array[y] = xx;}事实证明这个直觉是正确的,运行截图如下所示:
但是,其中的道理还是不太明白,只是感觉这是值与地址的关系。
后来问了别人才确定,第一种方法是另建了int类型的对象,操作是在新的int数上进行的,并不改变原来数组中的值,而第二种方法由于传入的参数实际上就是地址(引用),所以原来数组中的值发生了改变。
阅读全文
0 0
- 关于Java中交换数组中的两个元素的一个错误笔记
- 交换两个数组中的元素
- 交换一个数组前两个元素位置(@的用法)
- 交换两个数组元素以及求一个整数中二进制位的代码
- 在排序的数组中交换两个元素
- 两个数组中对应元素值的交换
- 交换数组中两个位置的元素值
- Java中删除数组中的一个元素
- 交换两数组中的元素使得这两个数组的差最小
- Vector中两个元素值的交换
- Python中交换两个元素的方法
- java 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- java中使用随机数交换数组元素
- 关于通过异或交换两个元素的值的一个陷阱
- 关于java中交换两个变量的值
- 求一个数组中两个元素的最大差值
- 【一个小实验】找出两个数组中相同的元素
- 编写一个使用指针的c函数,交换数组a和数组b中的对应元素
- 记录异常日志的七条规则
- myflag step9:新增falg的支持
- HDU1269迷宫城堡连通分量分解
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—F
- redis小结
- 关于Java中交换数组中的两个元素的一个错误笔记
- 数据结构(栈--两个队列实现)
- C语言函数strtok
- Thinkphp5使用阿里大于短信验证
- EEE功能及限制
- 树莓派上电自启动某执行程序的实现
- C++11多线程学习小结
- Xshell多窗口执行同一个命令
- 常见的MAC算法(PBOC_3DES_MAC、ANSI X9.9MAC算法、ANSI x9.19算法)